Изменения NSKeyedUnarchiver в iOS12 — как разархивировать массив строк

В Foundation произошли некоторые изменения с iOS 11.4 до iOS12. К сожалению, я не смог найти никакой полезной документации по этой теме.

До iOS12 у меня был этот код отлично работающий для чтения массива со строками из определенного пути к файлу:

if let myList : Array<String> = NSKeyedUnarchiver.unarchiveObject(withFile: filePath) as? Array<String> {
   // ...
}

Как я узнал, в iOS12 есть несколько новых методов, которые я должен использовать, и я попробовал это (конечно, в структуре do-catch и после получения объекта данных):

let myList : Array<String> = try NSKeyedUnarchiver.unarchivedObject(ofClass: Array<String>, from: data)

Я также пробовал это без успеха:

let myList : Array<String> = try NSKeyedUnarchiver.unarchivedObject(ofClass: Array<String>.self, from: data)

Любая рекомендация?


person LukeSideWalker    schedule 22.12.2018    source источник
comment
В Swift настоятельно рекомендуется использовать облегченный протокол JSONSerialization, PropertyListSerialization или Codable, а не objective-c-ish NSKeyed(Un)archiver   -  person vadian    schedule 22.12.2018
comment
Я знаком с Codable и использую его для inAppCreatedObjects, но здесь мне нужно перенести данные из более ранней версии IOS в моем приложении.   -  person LukeSideWalker    schedule 22.12.2018


Ответы (1)


Наконец-то я узнал себя. Это работало с этим методом:

if let fileNames = try NSKeyedUnarchiver.unarchiveTopLevelObjectWithData(dataObject) as? Array<String> {
    // ... 
}        
person LukeSideWalker    schedule 22.12.2018