![](/img/trans.png)
[英]How to convert Data/NSData to an Array of Integers using Swift
[英]How to convert custom array to NSData in swift?
我正在嘗試通過NSUserDefaults
保存數據。 這是我的代碼
@IBAction func saveBtn(sender: AnyObject) {
var userName = nameLbl.text
UserInfo.append(User(name: userName))
NSUserDefaults.standardUserDefaults().setObject(UserInfo, forKey: "UserInfo")
userName = ""
}
但是,當我單擊保存按鈕時,它顯示Attempt to set a non-property-list object
。 我認為, UserInfo
數組需要轉換為NSData
。 請告訴我我該怎么做?
您需要使您的自定義對象符合NSCoding
協議,並實現編碼和解碼方法。 完成后,您可以使用encode方法創建要與NSUserDefaults一起使用的NSData對象。
在您的UserInfo類中是這樣的:
required convenience init?(coder decoder: NSCoder) {
self.init()
guard let title = decoder.decodeObjectForKey("title") as? String
else {return nil }
self.title = title
}
func encodeWithCoder(coder: NSCoder) {
coder.encodeObject(self.title, forKey: "title")
}
然后,可以將編碼數據與NSUserDefaults一起使用,如下所示:
@IBAction func saveBtn(sender: AnyObject) {
var userName = nameLbl.text
UserInfo.append(User(name: userName))
let data = NSKeyedArchiver.archivedDataWithRootObject(UserInfo)
NSUserDefaults.standardUserDefaults().setObject(data, forKey: "UserInfo")
userName = ""
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.