私は MasterDetail アプリに取り組んでおり、itemCells の更新に問題があります。以下の DetailViewController のコードを使用して、セル (カスタム ItemCell があるセル) に触れた後に詳細ビューにアクセスし、テキスト フィールドの内容を編集し、保存ボタンを押して、項目データを更新できるようにしたいと考えていました。 、MasterViewController に戻ります。
DetailViewController.m から
- (IBAction)addItem:(id)sender
{
RoomItem *item = [[RoomItem alloc] initWithName:[_roomTxt text] Building:[_buildingTxt text]];
//add item is an addObject method i've placed in RoomList.m
[[RoomList sharedStore] addItem:item];
[self.navigationController popToRootViewControllerAnimated:YES];
}
これが新しいテーブル ビュー アイテムを作成しているだけで、元のアイテムを更新していないことはおそらく明らかですが、私はばかげた初心者であり、ドキュメントでこれを理解するのに役立つものを見つけることができません。
アイデア?状況を正確に説明するのに十分な情報/コードを提供していない場合はお知らせください。
また、UITableViewAccessory を通じて同じ機能を実現する方法はありますか?
ありがとう。
これが私のために働いたものです。コア データ エンティティを適切に取得していなかったようです。ただし、index:0 の RoomItem のみを更新するため、objectAtIndex クエリは依然として問題です。 更新しようとしている RoomItem のインデックスを取得するにはどうすればよいですか?
編集:
- (RoomItem *)updateItemWithRoom:(NSString *)room Building:(NSString *)building
{
NSError *error = nil;
NSEntityDescription *entity = [NSEntityDescription entityForName:@"RoomItem" inManagedObjectContext:context];
NSFetchRequest *request = [[NSFetchRequest alloc] init];
[request setEntity:entity];
RoomItem *currentRoomItem = [[context executeFetchRequest:request error:&error] objectAtIndex:0];
request = nil;
[currentRoomItem setRoom:room];
[currentRoomItem setBuilding:building];
[self saveChanges];
return currentRoomItem;
}