0
我有一個類的人,這是一個模型返回NSUserDefaults的空數組
import Foundation
public class Person : NSObject , NSCoding{
public var name:String="";
public var gender:Int = 0;
public var status:Int = 0
override init(){
super.init()
}
public init (name:String, gender:Int){
self.name=name;
self.gender=gender;
}
required public init(coder aDecoder: NSCoder) { }
public func encodeWithCoder(_aCoder: NSCoder) { }
}
現在,當我嘗試中檢索[人]數組我使用方法getPersons(arr : String!)
。如果NSUserDefaults中沒有數據,我創建它,將1個元素放入它並使用setPersons()
方法存儲。
問題是,在檢索我得到一個數組正確計數(1),但對象沒有填充,有「」在字符串和0在整數變量。
private func archivePeople (people : [Person]) -> NSData{
return NSKeyedArchiver.archivedDataWithRootObject(people as NSArray)
}
public func getPersons(arr : String!) -> [Person]{
var array : [Person] = []
if let unarchivedObject = NSUserDefaults.standardUserDefaults().objectForKey(arr) as? NSData {
array = (NSKeyedUnarchiver.unarchiveObjectWithData(unarchivedObject) as? [Person])!
}
if array.count == 0 {
array.append(Person(name: A.DEFAULT_THEIR_NAMES,gender: 0))
setPersons(arr, people: array)
}
return array
}
public func setPersons(key: String, people : [Person]){
let archivedObject = archivePeople(people)
userDefaults.setObject(archivedObject, forKey: key)
userDefaults.synchronize()
}
什麼是錯?我是否以錯誤的方式設置或檢索?
什麼是在'初始化的機構(coder'和'encodeWithCoder('當然,你需要添加代碼來編碼和初始化 – vadian