通过表视图更新实体

时间:2015-05-03 21:58:12

标签: ios objective-c core-data nsunknownkeyexception

是否可以从配置单元功能更新实体中的值? 如果数字大于另一个,我想更改entries属性的值。这是我到目前为止,但它崩溃了应用程序错误:

Terminating app due to uncaught exception 'NSUnknownKeyException', reason:
'[<Outgoing 0x7fbcf3141890> setValue:forUndefinedKey:]: the entity Outgoing 
is not key value coding-compliant for the key "goingover".'

MY configurecell方法:

- (void)configureCell:(UITableViewCell *)cell atIndexPath:(NSIndexPath *)indexPath {
    Outgoing *outgoing = [self.fetchedResultsController objectAtIndexPath:indexPath];
    cell.textLabel.text = outgoing.costDescription;
    cell.detailTextLabel.text = [NSString stringWithFormat:@"%.2f",[outgoing.amount floatValue]];

    if (self.incomingTotal > self.outgoingTotal) {

        [outgoing setValue:@"no" forKey:@"goingover"];

    }


    if ([outgoing.goingOver isEqualToString:@"yes"]) {
        cell.backgroundColor = [UIColor redColor];
    }else{

        cell.backgroundColor = [UIColor lightGrayColor];

    }

}

1 个答案:

答案 0 :(得分:0)

我认为在Outgoing类(应该是NSManagedObject的子类)中,您没有使用此确切名称和类型goingover正确定义属性NSString

此外,在configureCell方法中更新核心数据实体是个坏主意。您应该将视图(单元格)和数据(托管对象)分开。此方法用于配置单元,而不是数据。相反,在加载任何单元格之前,请确保数据正确(根据您在if语句中定义的规则。

最后,不建议在字符串中存储布尔值(true或false)。您应该修改数据模型以使用布尔值。而且,诸如简单条件可能根本不需要持久化。只需使用if子句为单元格着色。