2017-04-12 77 views
0

我已经在我的项目2个NSMutableArrays,被告知,由于核心数据不支持的NSMutableArray,我将不得不存档,并与的NSKeyedArchiver解除封存,以便能够将其保存到核心数据。我实现了一个NSFetchResultsController我的tableview,我怎么会去拯救的NSMutableArray中的的NSKeyedArchiver,然后使用核心数据?我会在我的数组和NSKeyArchiver下面发布一些代码。是否可以使用NSKeyedArchiver将NSMutableArray保存到核心数据中?

- (instancetype)init { 
    self = [super init]; 
    if (self) { 
    self.nameList = [NSMutableArray arrayWithObjects:@"1", 
                @"2", 
                @"3", 
                @"4", 
                @"5", 
                nil]; 


    self.descArray = [NSMutableArray arrayWithObjects:@"desc1", 
                 @"desc2", 
                 @"desc3", 
                 @"desc4", 
                 @"desc5", 
                 nil]; 
        } 
    return self; 
} 

// How arrays are archived 
NSData *titleData = [NSKeyedArchiver archivedDataWithRootObject: self.nameList]; 

.... //Not sure what to do with the archived data 

NSData *descData = [NSKeyedArchiver archivedDataWithRootObject: self.descArray]; 

.... 

现在他们被归档后我该怎么处理这两个数组?我将如何能够在以后添加到他们?

我的核心数据模型是简单,它是所谓的“数据”的实体,有一个名为“标题”和“说明”字符串类型2个属性。这2个属性用于存储数组。

我对这个项目的希望是让用户的新对象添加到tableview中,对现有的数据组成的细胞已经之上,我想在核心数据这件事。我知道NSFetchResultController的,但我有麻烦带来这一切在一起,得到它的工作,任何帮助引导我朝着正确的方向欢迎

+0

它看起来更像你应该有'name'和'description'属性的核心数据实体,然后创建了一些核心数据 – Paulw11

回答

0

您可以保存在核心数据不可改变的数据。你可以通过NSKeyedArchiver将可变的变为不可变的。与NSUserDefaults相同的东西。

+0

这些对象的你能不能给代码的例子吗? – jumpman007

+0

func getDataFromArray(arrayData:NSArray?) - > NSData { return NSKeyedArchiver.archivedDataWithRootObject(arrayData!) } – shiv