0

这是谓词:

group.AddressElements CONTAINS <AddressElement: 0x18a4b610> (entity: AddressElement; id: 0xb76dc60 <x-coredata://4F0D8450-8BB8-4361-AF55-69ED35799058/AddressElement/p2468> ; data: <fault>) 

粗略地说,我想检索一个与组具有一对一关系的实体,并且该组与 AddressElement 实体具有一对多关系。我要检索的对象必须在相关组的 AddressElements 中具有特定的 AddressElement 对象。因此我写了那个谓词: group.AddressElement 必须包含我作为参数传递的对象,即<AddressElement: 0x18a4b610> (entity: AddressElement; id: 0xb76dc60 <x-coredata://4F0D8450-8BB8-4361-AF55-69ED35799058/AddressElement/p2468> ; data: <fault>)

当我尝试获取请求时,由于谓词异常的未实现 SQL 生成而崩溃。

我究竟做错了什么?

4

1 回答 1

2

正如您在此处 contains看到的,关键字用于字符串比较。

尝试将您的谓词修改为(未测试):
编辑:

我已经测试了两个:

[NSPredicate predicateWithFormat:@"ANY group.AddressElements = %@",someAddressElement]

和:

[NSPredicate predicateWithFormat:@"%@ IN manufactur.manufactures",someAddressElement]

两者都导致以下 SQL 语句:

SELECT DISTINCT 0, t0.Z_PK, t0.Z_OPT, t0.ZSOMEPROP, t0.ZTOONE FROM ZSOMEENTITY t0 JOIN ZTHEONEENTITY t1 ON t0.ZTOONE = t1.Z_PK JOIN ZTHEMANY t2 ON t1.Z_PK = t2.ZTOMANY WHERE  t2.Z_PK = ?

(在 iOS 6.1 上测试)

于 2013-07-23T11:49:19.293 回答