作者leondemon (狗狗)
看板MacDev
标题[问题] Archiving
时间Sat Oct 3 01:37:14 2009
Foundation framework的七大资料物件:
NSNumber、NSString、NSSet、NSArray、NSDictionary、NSDate、NSData
以下非此七大资料物件皆称为「其他物件」、instance variables称「ivar」
1.NSKeyedArchiver是否只能对这七种资料物件进行Archiving?
我的理解是:
任何其他物件都必须遵照NSCoding protocol将其ivar进行encoding
若其ivar为七大资料物件之一的型别,则程式工作到此即可
但若其ivar又为其他物件,则此物件必须也是遵照NSCoding protocol
直到所有的要archiving的物件,皆为七大资料物件型别为止。
因此NS只有这七种资料物件型别,不会有第八种
这样理解有错吗?
2.在Foundation framework中能够用plist进行archiving的
除了NSSet之外,其他六种都可以。为什麽设计上NSSet没有内定此功能?
即initWithContentsOfFile: 和writeToFile:atomically: 之类的method
其他物件也可以用XML file进行archiving吗?
如果可以,要怎麽编写initWithContentsOfFile:及writeToFile:atomically:?
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 163.13.42.121
※ 编辑: leondemon 来自: 163.13.42.121 (10/03 03:33)
※ 编辑: leondemon 来自: 163.13.42.121 (10/03 03:57)
1F:→ zonble:你可以把物件都转成 NSData 处理 10/04 14:30
2F:→ leondemon:物件转成NSData是否都需要先conform NSCoding protocol? 10/04 20:26
3F:→ leondemon:因为我的理解是NSData只是可以塞多个Root Objects而已 10/04 20:28
4F:→ leondemon:但是似乎都是需要经过Archiver叫各物件encoding 10/04 20:30
5F:→ leondemon:还是说可以不用encoding就可以丢到NSData里面去?? 10/04 20:31