SELECT * FROM tbl_SyncEntries WHERE syncDataType == 1 AND
syncLastSuccessOnDt == (SELECT max(syncLastSuccessOnDt) FROM tbl_SyncEntries
WHERE syncDataType==1)
如何为上面的 SQL 语句制定一个 NSPredicate?
我想检索记录,syncDataType == 1
同步同步数据类型 1 的位置和最近日期。
SELECT * FROM tbl_SyncEntries WHERE syncDataType == 1 AND
syncLastSuccessOnDt == (SELECT max(syncLastSuccessOnDt) FROM tbl_SyncEntries
WHERE syncDataType==1)
如何为上面的 SQL 语句制定一个 NSPredicate?
我想检索记录,syncDataType == 1
同步同步数据类型 1 的位置和最近日期。
使用 Core Data,您将
syncDataType == 1
其中syncLastSuccessOnDt
,和所以你需要的是NSFetchRequest
. (NSPredicate
只是获取请求的一个参数。)
NSManagedObjectContext *context = your managed object context
NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:@"SyncEntry"];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"syncDataType = %d", 1];
[request setPredicate:predicate];
NSSortDescriptor *sort = [NSSortDescriptor sortDescriptorWithKey:@"syncLastSuccessOnDt" ascending:NO];
[request setSortDescriptors:@[sort]];
[request setFetchLimit:1];
NSError *error;
NSArray *results = [context executeFetchRequest:request error:&error];
if (results == nil) {
// Error
} else if ([results count] == 0) {
// Nothing found
} else {
NSManagedObject *obj = results[0];
NSDate *lastSync = [obj valueForKey:@"syncLastSuccessOnDt"];
}
如果您为实体创建了托管对象子类SyncEntry
,则最后一部分可以写为
SyncEntry *obj = results[0];
NSDate *lastSync = obj.syncLastSuccessOnDt;