簡體   English   中英

如何快速將自定義數組轉換為NSData?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM