【问题标题】:MagicalRecord sorting using by KVCKVC使用MagicalRecord排序
【发布时间】:2013-01-12 16:22:45
【问题描述】:

到目前为止,我一直使用KVC 来访问对象的属性。

在我的对象中,我有一个这样的方法:

-(Address *)mainAddress {
    if (self.addresses != nil) {
        return [self.addresses anyObject]; //stub method
    }
    else {
        return nil;
    }
}

我可以将此方法与KVC 一起使用

mystring = [cliente valueForKeyPath:@"mainAddress.city"];

但我不能用来创建NSFetchRequestController(此代码使用 MagicalRecord)

NSFetchedResultsController *acontroller = [Customer fetchAllSortedBy:@"mainAddress.city" ascending:ascending withPredicate:companyPredicate groupBy:nil delegate:self];

这是错误:

 *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'keypath mainAddress.city not found in entity <NSSQLEntity Customer id=4>'

【问题讨论】:

    标签: nssortdescriptor magicalrecord kvc


    【解决方案1】:

    为了使用 NSFetchedResultsController 进行排序,你的 mainAddress keyPath 需要是你实体的一个属性。 NSFRC 将不使用内存中的 KVC,而是使用底层数据存储对数据进行排序。底线答案:让 mainAddress 在数据模型中的实体上成为一个字段。

    【讨论】:

    • 我会尝试,但我不喜欢在 db 中添加重复。
    • 这不是重复的问题,而是找出您的搜索崩溃的原因。您更喜欢哪一个,重复数据还是崩溃的应用程序?
    • 我用一个简单的属性改变了方法,现在 NSFRC 可以完美运行,甚至是 MagicalRecord...但是我需要改变我的模型。
    猜你喜欢
    • 1970-01-01
    • 2013-10-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多