Я передаю объект из моего UITableViewController в singleton, а затем обратно в свой UITableViewController через уведомление. UITableViewController использует NSFetchedResultsController. Затем он хочет, чтобы indexPath объекта находился в fetchedResultsController.indexPathForObject возвращает nil
Object *obj = (Object *)notification.object;
NSIndexPath *index = [self.fetchedResultsController indexPathForObject:obj];
Я установил уведомление в ходе блока AFNetworking/AFDownloadRequestOperation:
- (void)downloadObject:(Object *)object
{
........
[operation1 setProgressiveDownloadProgressBlock:^(AFDownloadRequestOperation *operation, NSInteger bytesRead, long long totalBytesRead, long long totalBytesExpected, long long totalBytesReadForFile, long long totalBytesExpectedToReadForFile) {
////// Sending Notification
////// Try to send notification only on significant download
totalBytesRead = ((totalBytesRead *100)/totalBytesExpectedToReadForFile);
NSLog(@"TOTAL BYTES IN PROGRESS BLOCK: %llu",totalBytesRead);
NSMutableDictionary *userDictionary = [[NSMutableDictionary alloc]init];
[userDictionary setObject:[NSNumber numberWithLongLong:totalBytesRead] forKey:@"progress"];
[userDictionary setObject:[NSNumber numberWithLongLong:totalBytesExpectedToReadForFile] forKey:@"totalBytes"];
[[NSNotificationCenter defaultCenter] postNotificationName:[NSString stringWithFormat:@"DownloadProgress%@",object.uniqueID] object:object userInfo:userDictionary];
}
Существует только один объект в [self.fetchedResultsController fetchedObjects];
и соответствует объект, принятый еще в уведомлении. index
всегда равен нулю, но fetchedResultsController не равен нулю, а [self.fetchedResultsController fetchedObjects]
возвращает правильный объект. Почему indexPathForObject
nil?
Я не знаю, но как вы передаете звук данных ** УЖАСНЫЙ **. В любом случае: попробовали ли вы использовать метод indexOfObject: 'int the' fetchedObjects', чтобы точно убедиться. Если это все равно возвращает ноль, тогда ваш код делает что-то неправильно, а объекты * - разные. – luk2302
Почему это звучит ужасно? У меня есть мой синглтон, отправляющий уведомление, которое мои другие классы слушают, чтобы обновить ход загрузки на моем UITableViewCells. Это обновляет все мои представления в моем TabBar, где использование делегата не обновлялось в моем приложении. Есть ли способ лучше? Я проверю, являются ли объекты одинаковыми. – Siriss
Синглтон почти всегда плох, его следует избегать практически любой ценой. Может быть, использовать указанную делегацию или сильно, поддерживая Objective-C KVO. Но отправка данных с A на B на C, чтобы вернуть их в A, не похожа на прочный дизайн. – luk2302