Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/25.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
在iPhone上使用核心数据实现标记_Iphone_Objective C_Core Data_Tagging - Fatal编程技术网

在iPhone上使用核心数据实现标记

在iPhone上使用核心数据实现标记,iphone,objective-c,core-data,tagging,Iphone,Objective C,Core Data,Tagging,我有一个使用CoreData的应用程序,我正试图找出实现标记和按标记过滤的最佳方法。出于我的目的,如果在原始SQLite中执行此操作,我只需要三个表,标记,项标记,当然还有我的项表。然后,过滤就像在三个表之间连接一样简单,在这三个表中,只有项与给定的标记相关。很简单 但是,有没有办法在CoreData中使用NSFetchedResultsController?NSPredicate似乎没有为您提供通过联接进行过滤的能力NSPredicate的无论如何都不是完整的SQL,所以我可能找错了地方。我尽

我有一个使用CoreData的应用程序,我正试图找出实现标记和按标记过滤的最佳方法。出于我的目的,如果在原始SQLite中执行此操作,我只需要三个表,
标记
项标记
,当然还有我的
表。然后,过滤就像在三个表之间连接一样简单,在这三个表中,只有
与给定的标记相关。很简单

但是,有没有办法在CoreData中使用
NSFetchedResultsController
NSPredicate
似乎没有为您提供通过联接进行过滤的能力
NSPredicate的
无论如何都不是完整的SQL,所以我可能找错了地方。我尽量避免在没有CoreData的情况下使用SQLite重新实现我的应用程序,因为我很享受CoreData在其他方面给我带来的性能。是的,我确实考虑过(并且建立了一个测试实现)跳入CaleDATA生成的原始SQLite,但是这不是未来的证明,我也希望避免。
是否有其他人尝试使用
UITableView
NSFetchedResultsController

UITableView中使用CoreData进行标记/过滤首先,您实际上不需要
项标记
实体。核心数据能够建模多对多关系,而无需中间实体。您可以拥有一个与多个
标记
的关系,该关系与多个
项目
的关系是对等的,而核心数据将在幕后发挥所有的魔力

所以,要设置一个fetch请求来执行您描述的操作,您可以执行如下操作。假设您有一个
标记
,它表示要筛选的标记。编写如下谓词:

[fetchRequest setPredicate:[NSPredicate predicateWithFormat:@"%@ IN tags", tag]];
这将为您提供一个谓词,该谓词仅返回在其
标记
关系集中具有
标记
s。很简单吧


记住:核心数据不是数据库。这是一个对象图管理系统。事实上,它在幕后使用SQL不应该影响您使用它的方式。

哇,这就是它所需要的,而且它的性能与“获取结果”控制器有关?听起来不错。我将研究如何实现这一点。是的,我知道核心数据不是数据库。我已经很好地利用了它作为持久化对象图的用途。但是,当谈到这个问题时,正是我对这些NSpredicate的工作原理缺乏了解,这让我渴望了解有关SQL的知识。:)