У меня странная ошибка: если я раскомментирую свой NSPredicate
, итоговый UITableView
пуст.Почему я должен прокомментировать мой NSPredicate, чтобы NSFetchedResultsController заполнил UITableView?
Мои данные модели является следующее: Категория < - >> Лента < - >> Сообщение
Я Извлечение Post
с. Post.feed
- Post
Feed
. Feed
имеет rss
NString
Недвижимость.
Вот код:
- (NSFetchedResultsController *)fetchedResultsController {
// Set up the fetched results controller if needed.
if (_fetchedResultsController == nil) {
// Create the fetch request for the entity.
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
// Edit the entity name as appropriate.
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Post"
inManagedObjectContext:_globalMOC];
[fetchRequest setEntity:entity];
// Edit the sort key as appropriate.
NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"date" ascending:NO];
NSArray *sortDescriptors = [[NSArray alloc] initWithObjects:sortDescriptor, nil];
[fetchRequest setSortDescriptors:sortDescriptors];
NSPredicate *predicate =[NSPredicate predicateWithFormat:@"feed.rss == %@", _detailItem.rss];
[fetchRequest setPredicate:predicate];
// Edit the section name key path and cache name if appropriate.
// nil for section name key path means "no sections".
NSFetchedResultsController *aFetchedResultsController =
[[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest
managedObjectContext:_globalMOC
sectionNameKeyPath:nil
cacheName:nil];
self.fetchedResultsController = aFetchedResultsController;
self.fetchedResultsController.delegate = self;
NSError *error = nil;
if (![self.fetchedResultsController performFetch:&error]) {
// Replace this implementation with code to handle the error appropriately.
// abort() causes the application to generate a crash log and terminate.
// You should not use this function in a shipping application, although it may be useful
// during development. If it is not possible to recover from the error, display an alert
// panel that instructs the user to quit the application by pressing the Home button.
//
NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
abort();
}
}
return _fetchedResultsController;
}
Как я уже говорил раньше, я вижу только результаты, если я раскомментировать NSPredicate
. Я попытался с LIKE
, ==
, =
, с одинарными и двойными кавычками вокруг %@
...
BTW, Лучше всего было бы непосредственно сравнить Feed
объект ...
Согласно Apple, синтаксис не может будь то проблема, но что тогда?
Post
s создаются в отдельном ManagedObjectController, совместно использующем тот же PersistentStoreCoordinator. Я получаю требуемый идентификатор объекта Feed
, чтобы связать новый Post
с его соответствующим Feed
в дочернем MOC (в противном случае я получаю сообщение об ошибке для связывания объектов с разных MOC).
Я также должным образом объединяю свои MOC в основной теме, когда дочерний MOC уведомляет об этом изменения.
В принципе: если я NSLog
в Post
сек я (комментируемые NSPredicate), я вижу каждый Post
с соответствующим RSS Feed
URL установки отображаемой Feed
(= detailItem
).
Кто-нибудь может мне помочь?
Возможный дубликат [Strange bug: раскомментирование NSPredicate в NSFetchedResultsController пуст UITableView] (http://stackoverflow.com/questions/19529511/strange-bug-uncommenting-an-nspredicate-within-nnnsfetchedresultscontroller- wi) –
Вы заметили, что я написал это и другое сообщение? – mirx