【发布时间】:2015-03-11 14:12:49
【问题描述】:
NSFetcheRequest 中使用的谓词有问题。
我想让所有联系人至少拥有phone.internationalNumber == phoneNumberToCompareWith。
这是我正在使用的谓词:
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SUBQUERY(contact.phones, $phone, $phone.internationalNumber == %@).@count != 0",phoneNumberToCompareWith];
我收到错误:
2015-03-11 14:54:17.041 appName[1370:390550] 核心数据:错误: -executeRequest:遇到异常 = 数据库的 I/O 错误 /var/mobile/Containers/Data/Application/F262488E-30BA-414E-979A-D316F53041C3/Documents/appName.sqlite。 SQLite 错误代码:1,“没有这样的列:t2.ZINTERNATIONALNUMBER” 用户信息 = { NSFilePath = "/var/mobile/Containers/Data/Application/F262488E-30BA-414E-979A-D316F53041C3/Documents/appName.sqlite"; NSSQLiteErrorDomain = 1; }
实体关系:
[编辑]:这个谓词完成了:
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"(%@ in contact.phones.internationalNumber)", phoneNumberToCompareWith];
但由于我从不使用 SUBQUERY 可以告诉我如何使用 SUBQUERY 做同样的事情,谢谢
【问题讨论】:
-
实体名称应为大写字母。例如
Phone、Contact等 -
如您所见,我手动编辑图像。在我的模型中,它们是大写字母。
标签: ios objective-c core-data subquery nspredicate