我正在做一個簡單的程序,可以存檔我的對象,並在啓動時取消存檔。如何處理unarchiver與這種情況..?
我有一個lists.m其中可變數組採用歸檔稱爲favouritesList商店商品到文件中。內部列表,我有簡單的對象稱爲favouriteItem
那麼,問題與此代碼
-(void) loadList
{
self.favouritesList =
[[NSKeyedUnarchiver unarchiveObjectWithFile:self.fileName] mutableCopy];
if(self.favouritesList == nil)
self.favouritesList = [[NSMutableArray alloc]init];
}
,我已經得到唯一的例外是這個 [NSKeyedUnarchiver initForReadingWithData:]:發生了難以理解的存檔( 0X62,0x70,0x6c,0×69(0x73)的,0x74,爲0x30,的0x30)」
我知道我在用的文件是空的(實際上它被從包文件,這也是空的)解檔複製。
那麼,我怎麼能避免這一點,當我仍然希望我的應用程序啓動時從文件加載數據。 當我使用下面的代碼
-(void) loadData {
self.URLLists = [NSMutableArray arrayWithContentsOfFile:self.path];
if(self.URLLists == nil) {
self.URLLists = [[NSMutableArray alloc]init];
}
}
這裏,即使在self.path文件是空的,它返回nil,我只能說 如果它返回nil,我將指派爲新一第一次。 但是,與NSkeyedUnarchiver它工作有點不同.. 你能解釋它是如何不同,我如何避免這個錯誤..? 謝謝。
如何處理arrayWithContentsOfFile的情況?我不需要處理任何異常,因爲它不會拋出任何異常? –
@denis_choe:是的。如果您閱讀[unarchiveObjectWithFile:]的文檔(https://developer.apple.com/library/ios/documentation/cocoa/reference/foundation/Classes/NSKeyedUnarchiver_Class/Reference/Reference.html#//apple_ref/occ/clm/NSKeyedUnarchiver/unarchiveObjectWithFile :)和[arrayWithContentsOfFile:](https://developer.apple.com/library/mac/documentation/Cocoa/Reference/Foundation/Classes/NSArray_Class/NSArray.html#//apple_ref/occ/clm/ NSArray/arrayWithContentsOfFile :),他們每個人都說他們如何對一個空文件做出反應。 NSKeyedUnarchiver拋出一個異常,NSArray返回nil。 – Chuck