作者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)
→ zonble:你可以把物件都轉成 NSData 處理 10/04 14:30
→ leondemon:物件轉成NSData是否都需要先conform NSCoding protocol? 10/04 20:26
→ leondemon:因為我的理解是NSData只是可以塞多個Root Objects而已 10/04 20:28
→ leondemon:但是似乎都是需要經過Archiver叫各物件encoding 10/04 20:30
→ leondemon:還是說可以不用encoding就可以丟到NSData裡面去?? 10/04 20:31