2013-04-12 2 views
0

Я показываю некоторые данные из объекта Я получаю от своего managedObjectContext. Когда я выхожу из приложения и открываю его снова (кстати, для чего это правильный термин, я думаю, перезапуск - это что-то еще), последнее представление все еще открыто и метки все еще заполнены. Все выглядит хорошо. После прокрутки этого представления ячейки таблицы перезагружаются, и теперь все метки просто показывают значения null.Объект ниль после того, как приложение снова активируется

Я считаю, что мой объект является {nil} после перезапуска, но я не знаю почему. Есть ли возможность кэшировать объекты вручную?

ответ

0

Я нашел решение: добавьте свойство и поместите данные в это свойство, прежде чем передавать данные в DetailsView.

До:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    MyObject* myObj = (MyObject *)[self.managedObjectContext existingObjectWithID:[self.searchResults objectAtIndex:indexPath.row] error:nil]; 
    DetailsViewController *details = [[DetailsViewController alloc] init]; 
    details.myObject = myObj; 
    [self.navigationController pushViewController:details animated:YES]; 
} 

После:

@property (nonatomic, strong) MyObject* myObj; 

Я добавил свойство для моего объекта и добавить его к методу didSelectRowAtIndexPath.

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    self.myObj = (MyObject *)[self.managedObjectContext existingObjectWithID:[self.searchResults objectAtIndex:indexPath.row] error:nil]; 
    DetailsViewController *details = [[DetailsViewController alloc] init]; 
    details.myObject = self.myObj; 
    [self.navigationController pushViewController:details animated:YES]; 
} 
+0

Не является DetailsViewController.myObject, определяемым как слабая ссылка? –

+0

Хорошая точка. Но нет, он определен как «сильный». – flather

Смежные вопросы