the*_*ole 2 macos cocoa objective-c gnustep
我正在尝试以编程方式访问一对一(一对多).My Data模型包含一个名为language(带有两个字符串属性)的NSManagedEntity,它与一个名为WordCategory的实体(一对多)有关系.我使用NSFetchRequest获取所有语言实体.工作正常.我得到了关系的valueForKey,并且工作正常.我可以使用它的对象.但是,当我尝试将消息计数发送到存储WordCategory对象的NSSet时,我得到了一个
换句话说,这条线有效:
NSLog(@"word category count %@",[[wordCategory anyObject] valueForKey:@"name"]);
Run Code Online (Sandbox Code Playgroud)
这个没有:
NSLog(@"word category count %@",[wordCategory count]
Run Code Online (Sandbox Code Playgroud)
我收到一条消息:调试器中的EXC_BAD_ACCESS.
这是代码的其余部分:
NSManagedObjectContext *moc = [myAppDelegate managedObjectContext];
NSFetchRequest *request = [[NSFetchRequest alloc] init];
[request setEntity:[NSEntityDescription entityForName:@"Language" inManagedObjectContext:moc]];
NSError *error = nil;
NSArray *results = [moc executeFetchRequest:request error: &error];
if (error) {
[NSApp presentError:error];
return;
}
NSManagedObject *obj = [results objectAtIndex:0];
NSSet *wordCategory = [obj valueForKey:@"category"];
NSLog(@"word category count %@",[wordCategory count]);
Run Code Online (Sandbox Code Playgroud)
我会感激任何人都可以在这个谜团中流下的光.谢谢你的帮助!
NSSet上方法计数的返回类型是NSUInteger.因此,如果您尝试使用%@来引用此类型,您将在调试器中收到消息:EXC_BAD_ACCESS.您正在访问一种不期望的值.
请尝试使用%d代替.
NSLog(@"word category count%d",[wordCategory count]);
在bobDevil的评论后编辑(准确答案 - 更多评论):
NSLog(@"word category count%lu",[wordCategory count]);
祝一切顺利.
| 归档时间: |
|
| 查看次数: |
1432 次 |
| 最近记录: |