我正在开发 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 实现相同的功能?
谢谢。
这对我有用。看来我没有正确获取核心数据实体。但是,objectAtIndex 查询仍然是一个问题,因为它只更新了 index:0 处的 RoomItem。 如何获取我要更新的 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;
}