gpt4 book ai didi

Cocoa 绑定(bind),默认值中的字符串值绑定(bind)到文本字段。我怎样才能以编程方式读取这个字符串?

转载 作者:行者123 更新时间:2023-12-03 17:46:54 30 4
gpt4 key购买 nike

我通过 IB 在 UserDefaultsTextField 设置之间建立了 cocoa 绑定(bind):

enter image description here

这非常有效,每次启动应用程序时,TextField 都会保留其值

但是,我还想在代码中的其他位置以编程方式读取此字符串值。我基本上尝试了所有 UserDefaults.standard 调用:

guard let supplierData = UserDefaults.standard.data(forKey: "singleSupplierDownloadName") else {return}

returns: ▿ 145 bytes
- count : 145 ▿ pointer : 0x0000608000187ae0
- pointerValue : 106102873684704

UserDefaults.standard.string(forKey:) 返回 nil

object(forKey:) 返回:

▿ Optional<Any>
- some : <62706c69 73743030 d4010203 04050609 0a582476 65727369 6f6e5824 6f626a65 63747359 24617263 68697665 72542474 6f701200 0186a0a2 07085524 6e756c6c 57746573 74696e67 5f100f4e 534b6579 65644172 63686976 6572d10b 0c54726f 6f748001 08111a23 2d32373a 40485a5d 62000000 00000001 01000000 00000000 0d000000 00000000 00000000 00000000 64>

考虑到这一点,我决定尝试用 data(forKey:) 检索到的 Data 做一些事情

(lldb) po String(data: supplierData, encoding: .ascii)
▿ Optional<String>
- some : "bplist00Ô\u{01}\u{02}\u{03}\u{04}\u{05}\u{06}\t\nX$versionX$objectsY$archiverT$top\u{12}\0\u{01} ¢\u{07}\u{08}U$nullWtesting_\u{10}\u{0F}NSKeyedArchiverÑ\u{0B}\u{0C}Troot\u{01}\u{08}\u{11}\u{1A}#-27:@HZ]b\0\0\0\0\0\0\u{01}\u{01}\0\0\0\0\0\0\0\r\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0d"

我尝试过不同的编码器,但都是垃圾。直到我使用了ascii,你可以看到里面有一些英文的提示,“NSKeyedArchiver”,“unarchiver”等等。让我相信这个数据实际上不仅仅是一个String,而是一个压缩的String(已存档)

然后我想也许我需要初始化一个NSKeyedUnarchiver

(lldb) po NSKeyedUnarchiver(forReadingWith: supplierData)
<NSKeyedUnarchiver: 0x60800010beb0>

但是从那里......我不知道该怎么办。我从 NSKeyedUnarchiver 请求的所有内容都返回 nil

我走在正确的道路上吗?

如何通过 Cocoa Bindings 读取存储在共享用户默认 Controller 中的字符串值?

最佳答案

修复方法是不使用 NSKeyedUnarchiveFromData 作为绑定(bind)上的值转换器(或任何值转换器)。

当您使用值转换器时,这使得绑定(bind)系统将 View 中的值转换为模型要存储的其他值,并且当它从模型中检索值时,将其转换为 View 可以存储的值可以一起工作。在您的情况下,文本字段可以自然地使用字符串值,用户默认系统也是如此,因此不需要与数据对象进行转换,也没有好处。

通过 NSKeyedUnarchiveFromData 进行转换的主要用途是用于无法直接存储在属性列表中的类型值,例如颜色对象。

关于Cocoa 绑定(bind),默认值中的字符串值绑定(bind)到文本字段。我怎样才能以编程方式读取这个字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52787997/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com