NSPredicate에서 가져온 속성을 사용하는 것에 대한 질문이 있습니다 ('내 질문'아래 참조). 가져온 속성을 가져 오는 술어가 아닙니다. 명확한 설명과이 문제에 직면 할 수있는 다른 것들에 대해서 나는 작은 샘플 프로젝트를 만들려고 노력했다.가져온 속성 - 조건부
샘플 프로젝트
내 응용 프로그램 때문에 아이폰 OS 데이터 보관 지침을 위반 거부했기 때문에 반입 속성, 온 사용할 필요가. QA1719에서 그들은 다음과 같이 작성합니다 :
애플 리케이션 데이터와 사용자 데이터가 같은 파일에 섞이지 않도록해야합니다.
ICloud 동기화가 더 쉬울 수도 있고 마이그레이션에 도움이 될 수도 있습니다.
이렇게하려면 어떻게해야합니까?
사전로드 된 sqlite 데이터베이스를 사용했습니다.이 데이터베이스는 처음 실행될 때 번들 경로에서 복사되어 사용자 편집 내용을 저장하는 데 사용됩니다. 미리로드 된 데이터와 사용자 데이터를 섞어서는 안되기 때문에 데이터를 분리하려고합니다.
주요 문제는 서로 다른 상점 (Cross-Store Relationships)간에 관계를 가질 수 없다는 것입니다.
나는 Fetched Property Project에 대한 샘플을 아직 찾지 못해서, 나는 여기에 자신을 만들려고 노력하고 있습니다.
샘플 들어있다 :
- 영구 저장소 Books.sqlite 및
- A의 저장 (플러스 아이콘과 샘플 당신 '프리로드'그들) 책의 사전로드 목록 책을 좋아하는 책으로 만드는 방법. 이것은 영구 저장소 UserData.sqlite에 저장됩니다.
엔티티는 다음과 같습니다
-------------- --------------
| Books | | Favorite |
-------------- --------------
- author - favorite
- title --- 1 : 1 --- - books_title
법인 '도서'PreloadedData위한 '즐겨 찾기'UserData를 포함해야합니다.
단지 예를 들어, 그것은 또한 사용자 정보 (술어 가능 참고) 할 수있다거나 책이 다른 사람에게 임대되어있는 경우 즐겨 찾기 - 태그 ... 내 xcdatamodeld에서
(엑스 코드 편집기) 두 개의 구성 (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]) {
내가 샘플 프로젝트는
가 here을 다운로드 할 수 있습니다 술어 books_title == $FETCH_SOURCE.title
책에서 가져온 속성 link_favorite을했다 :
그들은 (모든 다른 인 보일러에서이다)와 함께 사용됩니다. Predicate (즐겨 찾기 책으로 필터링)를 제외하고는 작동합니다.
내 질문에 내가 좋아하는 경우에만 그 책에 의해 책에서 가져 필터링하고 싶습니다
. 나는 (fetchedResultsController) MasterViewController.m
에
fetchRequest.predicate = [NSPredicate predicateWithFormat:@"favorite_link.favorite == 1"];
를 사용했지만, 이것은 단지 충돌로 이어집니다.
나는 like here에 COUNT 또는 SUBQUERY를 사용해야한다고 생각하지만, 알아 내지 못했습니다.
미리 도움 주셔서 감사합니다.
는 --edit는 :
나는 간단한 NSArray를 가져 오기 (코어 데이터)를 만들어, 여기에 작동하고 다음
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"ANY link_favorite.favorite == 1"];
result = [result filteredArrayUsingPredicate:predicate];
을하지만 어떻게 내가 NSFetchedResultsController에 대한 하위 쿼리에서 이것을 번역 할 (tried this blog article)? 잘못된입니다 : 내가 처음 실행에 번들 경로에서 복사 및 사용자의 편집 내용을 저장하는 데 사용되는 사전로드 된 SQLite 데이터베이스를 사용했다
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SUBQUERY(contents, $x, $x.link_favorite.favorite == 1)[email protected] > 0"]
샘플 프로젝트 링크를 업데이트 할 수 있습니까? – joneswah
어떻게 작동시키는 지 알아 냈습니까? 크로스 스토어 및 가져온 속성에서 비슷한 문제가 있습니다. http://stackoverflow.com/questions/16391255/using-a-nsfetchedresultscontroller-with-an-nsmanagedobject-and-fetched-propertie – Gujamin