我有一个非常奇怪的问题。我正在使用coredata来保存笔记。我可以访问/保存/编辑“Notes”实体的所有属性,除了一个:类别。
-(void)editCategory {
NSFetchRequest *request = [[NSFetchRequest alloc]init];
NSEntityDescription *categRequest = [NSEntityDescription entityForName:@"Notes" inManagedObjectContext:_managedObjectContext];
request.predicate = [NSPredicate predicateWithFormat:@"text = %@", noteToEdit];
[request setEntity:categRequest];
//Error handling
NSError *error = nil;
NSMutableArray *mutableFetchResults = [[_managedObjectContext executeFetchRequest:request error:&error]mutableCopy];
if (mutableFetchResults == nil) {
NSLog(@"Error happened : %@", error);
}
Notes *editMe = [mutableFetchResults objectAtIndex:0];
[editMe setCategory:editCategoryText];
NSLog(@"Category from pickerview : %@", editCategoryText);
if (![_managedObjectContext save:&error]) {
NSLog(@"couldnt save : %@", error);
}
}
这一行:
[editMe setCategory:editCategoryText];
正在崩溃。 editCategoryText是一个字符串,作为category属性。奇怪的是,我使用完全相同的代码来更改title属性,我没有任何问题。
日志文件:
2013-11-07 15:49:20.286 Simple Notes 1[16511:a0b] -[__NSCFString managedObjectContext]: unrecognized selector sent to instance 0x8dccc30 2013-11-07 15:49:20.293 Simple Notes 1[16511:a0b] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSCFString managedObjectContext]: unrecognized selector sent to instance 0x8dccc30'
您是否知道为什么此属性的行为与其他属性不同?谢谢。
答案 0 :(得分:0)
不在电脑上,所以无法测试,但是:
摆脱mutableCopy
。 executeFetchRequest
返回自动释放的对象,然后你试图复制它,这会变成一个垃圾指针,它最终会指向一个字符串。
答案 1 :(得分:0)
实际上它似乎是一个核心数据错误,我通过在模拟器中删除我的应用程序,删除xcode中的核心数据模型,再次构建它并执行干净来解决它。