У меня есть эта странная проблема. Я сохраняю пользовательский объект класса в NSUserDefaults
, и, получая данные, получаю nil
для переменной int
. Ниже пользовательский классiOS: переменная int пользовательского объекта возвращает nil в NSUserDefaults
class User {
var name: String?
var user_id: Int?
var account_id: Int?
var location: String?
}
Я сохраняю объект как,
let defaults = NSUserDefaults.standardUserDefaults()
var data = NSKeyedArchiver.archivedDataWithRootObject([user]) // I can see the int values for the user objects here
defaults.setObject(data, forKey: "all_users")
Извлечение данных как,
let defaults = NSUserDefaults.standardUserDefaults()
let data = defaults.dataForKey("all_users")
var users = [Users]()
if data != nil {
let userData = NSKeyedUnarchiver.unarchiveObjectWithData(data!) as! [Users]
for usr in userData {
print("\(usr.name!)") // Prints the name
print("\(usr.user_id!)") // Nil value here
users.append(usr)
}
}
Я не имею ни малейшего представления о причине такого поведения ,
Ваш класс должен соответствовать 'NSCoding' – dan
Вы, возможно, придется написать собственный' Archiver'. http://stackoverflow.com/questions/2315948/how-to-store-custom-objects-in-nsuserdefaults – Putz1103
@ Putz1103 Я уже видел это решение, но не пытался, пока вы не указали его здесь. Работает. Благодаря! –