0

から取得しているオブジェクトのデータを表示していmanagedObjectContextます。アプリを終了して再度開くと(ところで、これの正しい用語は何ですか。再起動は別のものだと思います)、最後のビューがまだ開いていて、ラベルがまだ塗りつぶされています。すべてがうまく見えます。このビューをスクロールした後、表のセルが再ロードされ、すべてのラベルにnull値が表示されるようになりました。

再起動後、オブジェクトは {nil}になっていると思いますが、理由がわかりません。オブジェクトを手動でキャッシュする可能性はありますか?

4

1 に答える 1

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];
}
于 2013-04-12T13:13:41.143 に答える