Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/22.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
Iphone 使用NSPredicate覆盖核心数据信息_Iphone_Objective C_Ios - Fatal编程技术网

Iphone 使用NSPredicate覆盖核心数据信息

Iphone 使用NSPredicate覆盖核心数据信息,iphone,objective-c,ios,Iphone,Objective C,Ios,我正在尝试使用NSPredicate编辑核心数据条目中的条目,但我不完全确定它是如何工作的 我试图从另一个对象获取一个基于id的实体,但我看不出哪里出了问题。以下是我的有效数据模型: 实体:myEntity,属性:名称、id、值 我正试图通过以下方式检索数据库中的正确对象: NSEntityDescription *entity = [NSEntityDescription entityForName:@"myEntity" inManagedObjectContext:self.man

我正在尝试使用NSPredicate编辑核心数据条目中的条目,但我不完全确定它是如何工作的

我试图从另一个对象获取一个基于id的实体,但我看不出哪里出了问题。以下是我的有效数据模型: 实体:myEntity,属性:名称、id、值

我正试图通过以下方式检索数据库中的正确对象:

    NSEntityDescription *entity = [NSEntityDescription entityForName:@"myEntity" inManagedObjectContext:self.managedObjectContext];
    NSFetchRequest *request = [[NSFetchRequest alloc] init];
    [request setEntity:entity];

    NSPredicate *predicate = [NSPredicate predicateWithFormat:@"id == %@", self.itemToEdit.ID];
    [request setPredicate:predicate];

    NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"name" ascending:YES];
    NSArray *sortDescriptors = [[NSArray alloc] initWithObjects:sortDescriptor, nil];
    [request setSortDescriptors:sortDescriptors];

    NSError *error;

    MyEntity *myEntity = [[self.managedObjectContext executeFetchRequest:request error:&error] objectAtIndex: 0];
    myEntity.value = self.itemToEdit.anotherValue;

    [self.managedObjectContext save:&error];
无论出于何种原因,数据没有被保存,应用程序也没有崩溃,这让我相信问题在于谓词。不管怎样,代码怎么了?请注意,itemToEdit不是myEntity类型,它是另一个对象,但赋值类型相同

问候,

迈克

案件已结案。我犯了个愚蠢的错误。我是如此专注于使核心数据的这一新部分工作(我觉得这是令人畏惧的),以至于我实际上忘记了分配self.itemToEdit.value。对不起,浪费了你的时间


Mike

您是否检查了谓词中的
id
的大小写是否正确?我看到您的
itemToEdit
对象上有一个大写的
ID
属性。另外,请检查您的
error
对象,查看调用
executeFetchRequest:error:
save:
时是否存在任何问题。感谢您的回复。这两个错误都为空。另外,仔细检查了一下箱子,是对的。很高兴它已经修复了。我只是用nslogs重新输入了整个方法,包括作业前后。你可以把自己的答案标记为正确。(这可能对调试自己的问题仍有帮助)。谢谢danh,很抱歉浪费您的时间。