Как сохранить пользовательский массив объектов в NSUserDefauls как:Сохранить пользовательский массив объектов в NSUserDefaults
class Settings: NSObject {
var name: String? = ""
var addresss: [Address] = [Address]()
var addressSelectedIndex: Int = 0
....
}
class Address: NSObject {
var street: String? = ""
var city: String? = ""
....
}
я добавил кодера и декодера к обоим классам. Получение ошибки при:
func encodeWithCoder(aCoder: NSCoder) {
....
if let _addresss = self.addresss { // here
aCoder.encodeObject(_ addresss, forKey: "addresss")
}
}
Initializer для условной привязки должны иметь факультативный тип, а не '[Адрес]'
Вам не нужно использовать, если позволить адрес = self.address, непосредственно использовать 'aCode.encodeObject (адрес, forKey: "адрес")' является хорошо. ** если let ** работает только для проверки необязательного типа, но ваше определение адреса не является необязательным типом. – bubuxu
Ваш вопрос не имеет ничего общего с сохранением пользовательских объектов в 'NSUserDefaults'. Речь идет о ошибке Swift. Пожалуйста, [поиск по ошибке] (http://stackoverflow.com/search?q=%5Bswift%5D+Initializer+for+conditional+binding+must+have+Optional+type%2C+not), прежде чем отправлять свой вопрос. – rmaddy
спасибо bubuxu, это сработало – alrarea