Я пытаюсь получить объект Core Data и загружать его из UITableView
, который НЕ состоит из объектов Core Data. Это просто UITableView
, сделанный с заданным массивом, но я хочу загрузить объект в Core Data с тем же именем, что и ячейки detailTextLabel
. Я попробовал после this tutorial загрузить определенное значение, но он не работает: он сбой или говорит мне, что мой объект nil
, которого нет.Объект Fetch Core Data из UITableViews, не сделанный из Core Data
Так в основном у меня есть UITableView
, и загружает этот массив:
array = @[@"publication 1",@"publication 2", etc]
Затем, когда пользователь выбирает ячейку, я хотел бы, чтобы загрузить документ на основе клеток detailText
, но всегда загружает все объекты indexPath
, а не на основе ячеек detailText
. Поэтому скажите в главном контроллере представления, где заданный массив загружается в представление таблицы, я нажимаю на Memo 24, но его индекс равен (0,2), он загрузит объект, но он загрузит объект в загружаемом файле который имеет то же самое indexPath
(независимо от публикации на 0,2), в отличие от заголовка Memo 24.
Вот мой код:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
[self loadPublicationLocallyWithPubAtIndex:indexPath withTitle:cell.detailTextLabel.text];
}
- (void)loadPublicationLocallyWithPubAtIndex:(NSIndexPath *)indexPath withTitle:(NSString *)pubNumber {
NSManagedObjectContext *selectedObject = [self.fetchedResultsController objectAtIndexPath:indexPath];
NSString *phrase = nil; // Document password (for unlocking most encrypted PDF files)
NSString *filePath;
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
filePath = [[paths objectAtIndex:0] stringByAppendingPathComponent:@"PDFs"];
filePath = [filePath stringByAppendingPathComponent:[selectedObject valueForKey:@"puburl"]]; assert(filePath != nil); ;
NSLog(@"Local path is : %@", filePath);
if ([[NSFileManager defaultManager] fileExistsAtPath:filePath])
{
//File exists
NSData *data = [[NSData alloc] initWithContentsOfFile:filePath];
if (data)
{
//load document
}
}
}
Он работает для всех моих контроллеров отображения, которые не заселяют с Core Data, независимо от того, что indexPath
клетки, она по-прежнему получает правильный объект, так что заставляет меня верить, это что-то делать с [self.fetchedResultsController objectAtIndex:];
части, так что я даже попробовал:
NSIndexPath *selectedItem = [self.fetchedResultsController indexPathForObject:cell.detailTextLabel.text];
в didSelectRowAtIndexPath:
, но он не работает.
Как вы загружаете объект на основе ячеек detailTextLabel
в отличие от его indexPath
?
Спасибо! Я пытаюсь использовать NSPredicate в течение 3 дней. Ваш спасатель жизни, я новичок в кодировании (очевидно), и большая часть моего кода была получена через SO, поэтому, надеюсь, этот ответ поможет будущим искателям вопросов! Спасибо спасибо спасибо –
и благодарим вас за комментирование и объяснение вещей –