У меня есть привязка какао между UserDefaults
и TextField
настройкой через IB:
Это прекрасно работает при каждом запускеприложение 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
, полученным с помощью data(forKey:)
(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» и т. Д. Заставили меня поверить, что эти данные на самом деле являются не просто строкой, а сжатой строкой (в архиве)
тогда я подумал, что, может быть, мне нужно инициализировать NSKeyedUnarchiver
,
(lldb) po NSKeyedUnarchiver(forReadingWith: supplierData)
<NSKeyedUnarchiver: 0x60800010beb0>
Но оттуда ... Я не знаю, что делать.Все, что я спрашиваю из NSKeyedUnarchiver
, возвращает nil
Я на правильном пути?
Как я могу прочитать это строковое значение, хранящееся в Shared User Defaults Controller, через какаоНаручники