是否可以将带有NSKeyedArchiver的NSMutableArray保存到Core Data中?

时间:2017-04-12 23:08:24

标签: ios objective-c uitableview core-data nsmutablearray

我的项目中有2个NSMutableArrays,并被告知由于Core Data不支持NSMutableArray,我必须使用NSKeyedArchiver将其归档和取消归档,以便能够将其保存到Core Data。我为我的tableview实现了一个NSFetchResultsController,如何在NSKeyedArchiver中保存NSMutableArray然后在Core Data中使用它?我将在我的数组和NSKeyArchiver下面发布一些代码。

- (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];

....

现在这两个阵列存档后我该怎么办?我以后如何能够添加它们?

My Core Data模型很简单,它是一个名为“Data”的实体,有2个类型为string的属性,名为“title”和“desc”。 2个属性用于存储数组。

我对这个项目的希望是允许用户在组成单元格的现有数据之上添加新对象到tableview,我希望在Core Data中完成此操作。我知道NSFetchResultController,但我很难将这一切结合在一起以使其工作,欢迎任何帮助引导我朝正确的方向发展

1 个答案:

答案 0 :(得分:0)

您可以将不可变数据保存在核心数据中。你可以通过NSKeyedArchiver将U变为不可变的。与NSUserDefaults相同的事情。