核心数据,根据对象自身属性搜索对象
Posted
技术标签:
【中文标题】核心数据,根据对象自身属性搜索对象【英文标题】:Core data, search for objects based on objects own property 【发布时间】:2013-07-15 17:20:08 【问题描述】:我有一个 NSManagedObject, foo 存储它创建的 NSDate。它还有另一个字段 lifespan 存储对象有效的秒数。每个 foo 可以有不同的生命周期值。是否可以退回所有未超过其寿命的foos?我不确定如何在我的 NSPredicate 中表达这一点,或者是否有可能?
【问题讨论】:
考虑用保存对象到期日期的属性替换 lifespan 属性。 我明白了,这样我只是比较价值。有道理,谢谢。 【参考方案1】:Core Data 获取请求实际上可以包含简单的算术表达式。 因此,要查找“已创建 + 寿命 >= 现在”的所有对象, 以下作品:
NSDate *now = [NSDate date];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"created + lifespan >= %@", now];
【讨论】:
谢谢,这正是我想要的。【参考方案2】:是的,这是可能的。 例如:
NSDate * yesterday = [NSDate dateWithTimeIntervalSinceNow:-(60 * 60 * 24)];
NSPredicate * predicate = [[NSPredicate alloc] initWithFormat:@"dateCreated > %@", yesterday];
NSFetchRequest * fetchRequest = [[NSFetchRequest alloc] init];
[fetchRequest setPredicate:predicate];
NSError * error = nil;
NSArray * results = [managedObjectContext executeFetchRequest:fetchRequest error:&error];
这里有更多关于编写谓词的信息:http://developer.apple.com/library/ios/#DOCUMENTATION/Cocoa/Conceptual/Predicates/Articles/pCreating.html
【讨论】:
以上假设您的对象 Foo 有一个“dateCreated”属性,它是一个 NSDate。 一天并不总是有 24 小时。 是的——但这演示了如何进行提取。 感谢您的回答。不幸的是,我刚刚意识到我忘记包含问题的一部分。对不起,不完整的问题。我现在正在更改我原来的问题以正确描述我的问题。以上是关于核心数据,根据对象自身属性搜索对象的主要内容,如果未能解决你的问题,请参考以下文章