Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 使用SQLite存储预测所有聚合_Ios_Sqlite_Core Data_Nspredicate - Fatal编程技术网

Ios 使用SQLite存储预测所有聚合

Ios 使用SQLite存储预测所有聚合,ios,sqlite,core-data,nspredicate,Ios,Sqlite,Core Data,Nspredicate,我有一个叫做附件的实体,它有一个对多关系,没有反向关系 我正在尝试查找其downloaded属性为NO关系名称为attachments的所有附件实体,为此我编写了以下谓词 [NSPredicate predicateWithFormat:@"ALL attachments.downloaded == NO"] 这将导致***由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因是:“不支持的谓词(null)” 这只发生在SQLite存储上,如果我将存储更改

我有一个叫做附件的实体,它有一个对多关系,没有反向关系

我正在尝试查找其
downloaded
属性为
NO
关系名称为
attachments
的所有附件实体,为此我编写了以下谓词

[NSPredicate predicateWithFormat:@"ALL attachments.downloaded == NO"]
这将导致
***由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因是:“不支持的谓词(null)”

这只发生在SQLite存储上,如果我将存储更改为二进制,它似乎可以正常工作。我更愿意坚持使用SQLite商店


有什么想法吗?不管怎样,以不同的方式编写谓词以获得相同的预期结果?

我现在似乎找到了解决方法

attachmentRequestResults = [self.managedObjectContext executeFetchRequest:attachmentIdRequest error:&error];
attachmentPredicate = [NSPredicate predicateWithFormat:@"ALL attachments.downloaded == NO"];
attachmentRequestResults = [attachmentRequestResults filteredArrayUsingPredicate:attachmentPredicate];
我删除了fetchrequest的谓词,以便它返回所有实体,然后在返回的数组上运行谓词


仍然在寻找一种解决方案,我可以针对核心数据执行谓词,尽管您的模式描述有点不清楚,但我相信您只想使用谓词对附件实体执行提取

[NSPredicate predicateWithFormat:@"downloaded == NO"]
你试过了吗


我可能在这里完全错了^ ^

这可能已经过时了,但仍然有人会发现答案很有用

目前,使用SQLite作为后端存储的核心数据不支持ALL修饰符。听起来很简单,这就是为什么您可以使用它来过滤内存中的数组,以获得所需的结果


我认为这是因为它很难实施。至于SQLite,它对修饰符指定的条件语句实现除法操作。但是,NSPredicate并不限制您将其作为NSCompoundPredicate的一部分使用,因此增加了SQL生成器生成SQL语句的难度。

是的,这会起作用,但我正在寻找一种方法来获取需要按实体下载的附件列表。因此,如果我有一个名为Document的实体,它有附件,那么我需要一个方法,可以将实体名称“Document”传递给该实体,并获取该实体需要下载的附件列表。在我的问题中,我没有完全清楚这一点,对不起。谢谢你提供了这个非常有用的答案!!关于如何使用子查询或其他方法构造
ALL
,您有什么想法吗?