出于某种原因,这不起作用(虽然密钥路径确实存在):
实体在员工上设置。
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"department.departmentName == %@", departmentName];
[fetchRequest setPredicate:predicate];
NSError *fetchError = nil;
NSUInteger count = [moc countForFetchRequest:fetchRequest error:&fetchError]; // execution simply stops at this line, with no error or console log
当要求计数时,执行只在上面的最后一行停止。我没有得到控制台日志。我也没有任何异常。执行就停止了。持久存储中还没有对象。也许它崩溃是因为它试图在一个不存在的对象中跟踪一个keypath?这有意义吗?
GDB停止的行是:
0x002a31cb <+0459> test %eax,%eax
在此之前,我在堆栈跟踪中看到了很多NSSQLAdapter ...调用。肯定有问题。
好吧,但是当我将实体设置为关键路径的目的地然后只做
之类的操作时NSPredicate *predicate = [NSPredicate predicateWithFormat:@"departmentName == %@", departmentName];
然后没有问题,数量只是0。
答案 0 :(得分:2)
当你在对象图中有一个循环引用时,我已经看到了这种“只是停止”的行为。抓取会陷入循环中。如果是这种情况,编译器通常会警告您,但它不会阻止您运行。
答案 1 :(得分:1)
确保您还设置了获取请求的实体?与setEntity: