我有一个关于使用NSPredicate内获取性的问题(见下文“我的问题”)。 这不是谓词来获取获取财产。 为了澄清和他人,这也可能面临这个问题,我试图让一个小样本项目。
示例工程
使用撷取的特性需要来了,因为我的应用程序,是因为违反了iOS的数据存储准则的拒绝。 在QA1719他们写道:
应用程序应避免在同一文件交融的应用数据和用户数据。
我想,这可能是必要的,方便的iCloud同步,也可以帮助迁移。
那么,如何才能做到这一点?
我用了一个预装的SQLite数据库,这是我从束路径复制在第一次发射和用于保存用户编辑。 因为你不应该混合预加载和用户数据,我想它们分开。
主要的问题是,它是不可能有跨越不同的商店(关系跨商店关系 )。
我还没有找到已取得的房地产项目的样本还,所以我在这里试图让我自己。
对于样品有:
- 书预加载列表(样品你“预加载”他们的加号图标中)存储在持久存储Books.sqlite和
- 一种方法,使书你最喜欢的。 这是存储在持久性存储UserData.sqlite。
该实体是:
-------------- --------------
| Books | | Favorite |
-------------- --------------
- author - favorite
- title --- 1 : 1 --- - books_title
实体“图书”是PreloadedData,“收藏”应包含的UserData。
收藏夹,标签只是一个例子,也可能是用户所做的附注(谓语可用注),或者如果这本书是出租给别人?
在我xcdatamodeld(Xcode的编辑器)我已经添加了两个配置(PreloadStore,UserStore)。 每一只包含包含实体需要。
它们与使用(一切都是别人为样板):
- (NSPersistentStoreCoordinator *)persistentStoreCoordinator {
...
if (![__persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:@"PreloadStore" URL:storeURL options:nil error:&error]) {
...
if (![__persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:@"UserStore" URL:storeURLUserData options:nil error:&error]) {
我在书中做了一个牵强财产link_favorite与谓词
books_title == $FETCH_SOURCE.title
示例项目可以下载在这里 。 它的工作,除了谓词(由喜欢的书过滤器)。
我的问题
我想,以滤除只有那些书,这是我最喜欢的书籍中获取。 我试着使用
fetchRequest.predicate = [NSPredicate predicateWithFormat:@"favorite_link.favorite == 1"];
在MasterViewController.m
(fetchedResultsController),但这只会导致崩溃。
我想,我必须用的东西喜欢这里了COUNT或子查询,但我无法弄清楚。
在此先感谢您的帮助!
- 编辑:
我做了一个简单的NSArray取(核心数据),这里的下面是工作:
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"ANY link_favorite.favorite == 1"];
result = [result filteredArrayUsingPredicate:predicate];
但是,如何在我的NSFetchedResultsController(子查询翻译此尝试这个博客文章 )? 错的是:
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SUBQUERY(contents, $x, $x.link_favorite.favorite == 1).@count > 0"]