Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何在核心数据中持久化MSMutableArray?_Ios_Objective C_Core Data_Nsmutablearray - Fatal编程技术网

Ios 如何在核心数据中持久化MSMutableArray?

Ios 如何在核心数据中持久化MSMutableArray?,ios,objective-c,core-data,nsmutablearray,Ios,Objective C,Core Data,Nsmutablearray,我使用核心数据并将对象提取到NSMutableArray中: NSError *error; NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init]; NSEntityDescription *entity = [NSEntityDescription entityForName:@"Item" inManagedObjectContext:managedObjectContext];

我使用核心数据并将对象提取到NSMutableArray中:

NSError *error;
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Item" inManagedObjectContext:managedObjectContext];                                   

[fetchRequest setEntity:entity];
self.items = [[managedObjectContext executeFetchRequest:fetchRequest error:&error] mutableCopy];
然后,我使用这个可变数组在表视图中显示对象。此外,该数组中的数据会随着时间的推移而改变。我希望将整个阵列保存在核心数据中

我最初的想法是从核心数据中删除所有项,并通过对可变数组中的所有对象进行排序,一次保存一个:

- (void)persistAllItemsInCoreData{

    [self clearAllItemsFromCoreData];

    NSManagedObjectContext *context = [self managedObjectContext];

    for(int i = 0 ; i < [items count] ; i++){
        Item *item = [NSEntityDescription
                      insertNewObjectForEntityForName:@"Item"
                      inManagedObjectContext:context];
        item = [items objectAtIndex:i];
    }
    NSError *error;
    if (![context save:&error]) {
        NSLog(@"Could not save data: %@", [error localizedDescription]);
    }

}
-(void)persistalItemsInCoreData{
[self-clearAllItemsFromCoreData];
NSManagedObjectContext*上下文=[self-managedObjectContext];
对于(int i=0;i<[项目计数];i++){
项目*项目=[N实体说明
insertNewObjectForEntityForName:@“项”
inManagedObjectContext:context];
item=[items objectAtIndex:i];
}
n错误*错误;
如果(![上下文保存:&错误]){
NSLog(@“无法保存数据:%@,[error localizedDescription]);
}
}

不过,那不行。是否有更优雅的方法使用核心数据持久化NSMutableArray?

阵列中的项目已经在核心数据中。如果你改变了它们,你只需要保存它们。如果向该数组中添加一个项,则需要创建一个新的
NSManagedObject
实例并将其放入数组中


您的代码意味着您不了解核心数据的基本原理。我强烈建议您查看有关此框架的文档,以便更好地了解它。

阵列中的项目已经在核心数据中。如果你改变了它们,你只需要保存它们。如果向该数组中添加一个项,则需要创建一个新的
NSManagedObject
实例并将其放入数组中


您的代码意味着您不了解核心数据的基本原理。我强烈建议您查看有关此框架的文档,以便更好地了解它。

好的,当我将对象保存在阵列中时,对它们所做的更改确实会保留在核心数据中,这很酷。然而,似乎有一个例外。也就是说,当我更改数组中对象的顺序时,这种情况似乎不会持续。为什么?如何保持数组中对象的顺序?如果希望对结果重新排序,则应更改获取请求的排序。如果有自定义顺序,只需在实体上添加一个“order”字段并每次更新,无论如何,您需要添加一个NSSortDescriptor来对其进行排序。好的,当我将对象保存在数组中时,对它们所做的更改确实会保留在核心数据中,这很酷。然而,似乎有一个例外。也就是说,当我更改数组中对象的顺序时,这种情况似乎不会持续。为什么?如何保持数组中对象的顺序?如果希望对结果进行重新排序,则应更改获取请求的排序。如果有自定义顺序,则只需在实体上添加一个“顺序”字段并每次更新,无论如何,您需要添加一个NSSortDescriptor对其进行排序。