将自定义类对象转换为NSData [英] Converting custom class object into NSData
问题描述
我有一个自定义类要保存到 NSUserDefaults
。我被告知我需要将类对象转换为数据,以便将其保存到 NSUserDefaults
。我在 NSData
示例中找到了很多离散字符串或整数,但在自定义类中没有找到 NSData
。我对 NSData
编码等的复杂性知之甚少。感谢任何帮助
I have a custom class that I want to save into NSUserDefaults
. I am told that I need to convert the class object into data in order to save it to NSUserDefaults
. I found a lot of discrete string or ints to NSData
examples but nothing on custom class to NSData
. I know very little about the intricacies of NSData
encoding etc. Any help is appreciated
编辑:虽然我明白那里在这里是类似的答案,他们都没有在斯威夫特。语言之间的翻译是可行的,但它非常繁琐,有时甚至非常反直。
While I understand there are similar answers here, none of them are in Swift. Translating between the languages is doable, but it is extremely tedious and sometimes very counter-intuitive.
推荐答案
这是一个简单的例子你:
Here is one simple example for you:
//Custom class.
class Person: NSObject, NSCoding {
var name: String!
var age: Int!
required convenience init(coder decoder: NSCoder) {
self.init()
self.name = decoder.decodeObjectForKey("name") as! String
self.age = decoder.decodeObjectForKey("age") as! Int
}
convenience init(name: String, age: Int) {
self.init()
self.name = name
self.age = age
}
func encodeWithCoder(coder: NSCoder) {
if let name = name { coder.encodeObject(name, forKey: "name") }
if let age = age { coder.encodeObject(age, forKey: "age") }
}
}
//create an instance of your custom class.
var newPerson = [Person]()
//add some values into custom class.
newPerson.append(Person(name: "Leo", age: 45))
newPerson.append(Person(name: "Dharmesh", age: 25))
//store you class object into NSUserDefaults.
let personData = NSKeyedArchiver.archivedDataWithRootObject(newPerson)
NSUserDefaults().setObject(personData, forKey: "personData")
//get your object from NSUserDefaults.
if let loadedData = NSUserDefaults().dataForKey("personData") {
if let loadedPerson = NSKeyedUnarchiver.unarchiveObjectWithData(loadedData) as? [Person] {
loadedPerson[0].name //"Leo"
loadedPerson[0].age //45
}
}
经过操场测试。
希望这有帮助。
这篇关于将自定义类对象转换为NSData的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!