KVC使用MagicalRecord排序
Posted
技术标签:
【中文标题】KVC使用MagicalRecord排序【英文标题】:MagicalRecord sorting using by KVC 【发布时间】: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>'
【问题讨论】:
【参考方案1】:为了使用 NSFetchedResultsController 进行排序,你的 mainAddress keyPath 需要是你实体的一个属性。 NSFRC 将不使用内存中的 KVC,而是使用底层数据存储对数据进行排序。底线答案:让 mainAddress 在数据模型中的实体上成为一个字段。
【讨论】:
我会尝试,但我不喜欢在 db 中添加重复。 这不是重复的问题,而是找出您的搜索崩溃的原因。您更喜欢哪一个,重复数据还是崩溃的应用程序? 我用一个简单的属性改变了方法,现在 NSFRC 可以完美运行,甚至是 MagicalRecord...但是我需要改变我的模型。以上是关于KVC使用MagicalRecord排序的主要内容,如果未能解决你的问题,请参考以下文章
尝试将 Magical Record 与 Kiwi 一起使用时构建测试时出错
使用 Magical Record 在 NSDictionary 中导入数组
AFNetworking 的 Magical Record 导入问题