[問題] Archiving

看板MacDev作者 (狗狗)時間14年前 (2009/10/03 01:37), 編輯推噓0(005)
留言5則, 2人參與, 最新討論串1/1
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)

10/04 14:30, , 1F
你可以把物件都轉成 NSData 處理
10/04 14:30, 1F

10/04 20:26, , 2F
物件轉成NSData是否都需要先conform NSCoding protocol?
10/04 20:26, 2F

10/04 20:28, , 3F
因為我的理解是NSData只是可以塞多個Root Objects而已
10/04 20:28, 3F

10/04 20:30, , 4F
但是似乎都是需要經過Archiver叫各物件encoding
10/04 20:30, 4F

10/04 20:31, , 5F
還是說可以不用encoding就可以丟到NSData裡面去??
10/04 20:31, 5F
文章代碼(AID): #1AnZfChX (MacDev)