2012-12-17 69 views
1

我需要將數組保存在覈心數據中,所以我讀到我可以使用它的NSData。所以我認爲我有歸檔問題。核心數據的NSArray NSArray

NSMutableArray *newArray = [[NSMutableArray alloc]init]; 
NSData *newData = [NSKeyedArchiver archivedDataWithRootObject:newArray]; 
[myEntity setValue:newData forKey:@"nameOfMyData"]; 

然後我儘量挑我在另一個視圖控制器陣列填充

NSData *newdata = [NSData dataWithData:self.myEntity.nameOfMyData]; 
NSMutableArray *photoArray = [[NSMutableArray alloc]init]; 
photoArray = [NSKeyedUnarchiver unarchiveObjectWithData:newdata]; 

我沒有崩潰,但在命令行下一次出現:

[NSKeyedUnarchiver initForReadingWithData:]: data is empty; 
did you forget to send - finishEncoding to the NSKeyedArchiver? 

,當我嘗試添加對象到我的陣列,它不會添加

[photoArray addObject:myImage]; 

所以MYIMAGE被創建和使用它,我沒有問題,但在調試器總是寫photoArray:

photoArray = (NSMutableArray*) 0x00000000 0 objects 

回答

3

它應該工作。但是,解除存檔數組的時候,而使用:

NSData *newdata = [NSData dataWithData:self.myEntity.nameOfMyData]; 
NSMutableArray *photoArray = [NSMutableArray arrayWithArray: [NSKeyedUnarchiver unarchiveObjectWithData:newdata]]; 

要麼你有你的數組中的不符合NSCoding協議的對象或你不救你的核心數據上下文(或儲蓄是不成功的)。

NSData *newData = [NSKeyedArchiver archivedDataWithRootObject:newArray]; 

歸檔後你怎麼看,當你檢查newData的零?我想這是零。

+0

謝謝,現在我可以將myImage保存爲PhotoArray =)但現在我必須保存我的實體,所以很麻煩。我可以在單身人士保存實體嗎?因爲我有一些ViewControllers,並從第一個ViewController拿實體 – Neznajka

+0

這個問題還不清楚。您從核心數據管理對象上下文中檢索實體並對其進行更改。然後你保存你的上下文。再次檢索它(其他地方)時將包含更改。無論你使用單例處理核心數據訪問取決於你的實現。 – Mario

相關問題