Tri*_*riz 13 iphone cocoa-touch core-data uitableview
我正在制作一个带有结果的分段表,但我很难找到定制的部分.
通常,只有一个属性可以排序,并用于sectionNameKeyPath:生成节.但我的排序属性是动态计算的,我似乎无法fetchedResultsController正确使用它...
更新:使用下面的jbrennan的建议,我真的很接近预期的功能.我添加了一个类别NSDate,返回"天前"数字; 把它放在这里给我基于这些数字的部分:
NSFetchedResultsController *aFetchedResultsController =
[[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest
managedObjectContext:managedObjectContext
sectionNameKeyPath:@"myDateAttribute.daysAgo"
cacheName:@"Root"];
Run Code Online (Sandbox Code Playgroud)
这就是我被困住的地方:我不需要它们按"天前"排序,我需要根据实体中的其他属性通过一些计算对它们进行排序.所以我不能只调用那个自定义的Category方法,我需要调用带参数的方法,如下所示:
[myDateAttribute sortingRoutine:thisObject.value]
Run Code Online (Sandbox Code Playgroud)
或类似的东西.我希望这有一定程度的意义.非常感谢,如果你可以帮助:)
jbr*_*nan 16
我在一个(即将推出)iPhone应用程序中做了类似的事情.我的部分被这样的日期划分:昨天,今天,明天,未来......
无论如何,我的诀窍是向NSDate添加一个Category来确定我所获取的对象属于哪个部分.
我的托管对象有一个名为dueDate的属性,它是一个NSDate.配置获取的结果控制器时,我用作@"dueDate.relativeDate"节键路径.
在类别中,-relativeDate被声明为返回一个NSString并且也作为一个readonly属性(其中任何一个都可能就足够了,我没有尝试两者兼而有之,但它不会同时影响方法和属性声明).然后我简单地实现了它的方法,它工作得很漂亮.
您可以尝试以下方法.
在Task实体中向您的核心数据模型添加transient属性.然后执行
- (void)awakeFromFetch
Run Code Online (Sandbox Code Playgroud)
任务NSManagedObject类中的方法.查看其文档.在该方法中,您可以使用其他属性的值为transient属性设置值.请注意,对于您可以执行的操作存在一些限制,但在文档中对此进行了详细说明(最值得注意的是,您无法修改关系或传递参数;但是,如果您可以仅使用其他属性的值计算瞬态属性/关系应该是完美的).
完成此操作后,只需使用transient属性作为传递的属性即可返回各个部分.
| 归档时间: |
|
| 查看次数: |
8017 次 |
| 最近记录: |