我有一个使用ListViewController,DetailViewController和EditingViewController进行编辑的Core Data应用程序。在ListViewController,我有一个复选框的图形,我可以通过在你可以在ListViewController上编辑核心数据吗?
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
选择行切换两个图像是否有可能从ListViewController编辑的核心数据记录,这样我可以让我的选择持久?我无法制定出选择记录,编辑和保存值的语法 - 只需从true切换到false即可。
jon
感谢您的及时响应!答案1后的其他信息。您的假设是正确的。我正在CoreData Books示例上对此应用程序进行建模。我没有使用按钮,而是使用两个图像来创建一个选中和未选中的复选框。我添加了一个布尔“检查”到我的实体,重新创建头文件,并将头文件添加到我的ListViewController。这是数据模型头文件的简化版本。
@interface Patient : NSManagedObject
{
}
@property (nonatomic, retain) NSString * location;
@property (nonatomic, retain) NSNumber * check;
@property (nonatomic, retain) NSString * lastName;
@end
这里是我对你的代码的修改:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
UITableViewCell *cell = [self.tableView cellForRowAtIndexPath:indexPath];
NSManagedObject *entityObject = [self.fetchedResultsController objectAtIndexPath:indexPath];
if (![entityObject.check boolValue]) {
entityObject.check = [NSNumber numberWithBool:YES];
cell.imageView.image = [UIImage imageNamed:@"check.png"];
}
else {
entityObject.check= [NSNumber numberWithBool:NO];
cell.imageView.image = [UIImage imageNamed:@"uncheck.png"];
}
然而,这给我的错误“请求成员的东西‘检查’不是一个结构或联合”。我验证了新属性是一个布尔值,并且头文件被导入到ListViewController。有什么想法吗?
最后,这段代码是否消除了将entityObject.check保存到数据库的需要?再次感谢。
因为你没有自定义声明你自己的对象模型类,你可以获取和使用分别下列其值设置:设置使用[entityObject的setValue:[NSNumber的numberWithBool:YES] forKey:@“检查” ]并得到[entityValue valueForKey:@“check”] – Rog 2010-11-21 21:12:53
对不起,它在最后一行读取entityValue的地方应该是entityObject,以防万一你没有想到它。 – Rog 2010-11-21 21:19:16
你想要小心iPhone上的复选框按钮。用户有倾向于双击他们产生错误。这就是为什么滑动开关控制被创建,以便用户可以轻松快速地设置二进制状态。 – TechZen 2010-11-21 21:32:11