1
通用对象根本能保存为默认值吗?我知道自定义对象需要进行编码,但我希望编写图形以便可以通过plist编辑器进行操作。在我的情况下,我的“对象”是一个“通用”类型的字典数组。将“通用”对象图(字典,数组,字符串等)保存为默认值而不进行编码?
这就是我想要沟(播放列表模式)
class PlayItem : NSObject,NSCoding {
var name : String = "item"
var link : NSURL = NSURL.init(string: "http://")!
var rank = 0
override init() {
name = "item"
link = NSURL.init(string: "http://")!
super.init()
}
init(name:String, link:NSURL, rank:Int) {
self.name = name
self.link = link
self.rank = rank
super.init()
}
required init(coder aDecoder: NSCoder) {
self.name = aDecoder.decodeObjectForKey("name") as! String
self.link = aDecoder.decodeObjectForKey("link") as! NSURL
self.rank = aDecoder.decodeObjectForKey("rank") as! Int
}
func encodeWithCoder(aCoder: NSCoder) {
aCoder.encodeObject(name, forKey: "name")
aCoder.encodeObject(link, forKey: "link")
aCoder.encodeObject(rank, forKey: "rank")
}
}
class PlayList: NSObject {
var name : String = "list"
var list : Array <PlayItem> = Array()
override init() {
name = "list"
list = Array <PlayItem>()
super.init()
}
init(name:String, list:Array <PlayItem>) {
self.name = name
self.list = list
super.init()
}
required init(coder aDecoder: NSCoder) {
self.name = aDecoder.decodeObjectForKey("name") as! String
self.list = aDecoder.decodeObjectForKey("link") as! Array
}
func encodeWithCoder(aCoder: NSCoder) {
aCoder.encodeObject(name, forKey: "name")
aCoder.encodeObject(list, forKey: "list")
}
}
,所以我会用沟播放列表以及播放项目自定义对象和使用数组,字典,字符串,等等说能够保存像这样的东西
根将是我的“播放列表”数组。我是正确,我可以只保存/读取整个播放列表数组作为
NSUserDefaults.standardUserDefaults().setObject(playlists, forKey: "playlists")
playlists = NSUserDefaults.standardUserDefaults().arrayForKey: "playlists")
你可以尝试[NSObject-ObjectMap](https://github.com/uacaps/NSObject-ObjectMap) – Winter
那么,这似乎并没有处理数组字典,所以我决定坚持我所拥有的目前。毕竟主要的焦点是plist用户编辑。 – slashlos