情况:
我从sqllite核心数据数据库中获取一个完整的表,并在TableView中显示如下:
NSEntityDescription *entity = [NSEntityDescription entityForName:@"MyTable"
inManagedObjectContext:managedObjectContext];
挑战:
如何获取EntryID并从数据库中获取特定条目(例如,如果我点击一个条目)?我认为这是朝着正确的方向发展的?
NSPredicate *predicate = [NSPredicate predicateWithFormat: @"(id = %@)", myEntryID];
答案 0 :(得分:49)
如果你有一个名为entry
的入口对象,它将是一个这样的谓词:
NSPredicate *predicate = [NSPredicate predicateWithFormat: @"(SELF = %@)", entry];
大致相当于
NSPredicate *predicate = [NSPredicate predicateWithFormat: @"(objectID = %@)", entry.objectID];
对于NSManagedObjectID
,你会得到类似的内容:
NSPredicate *predicate = [NSPredicate predicateWithFormat: @"(objectID = %@)", myEntryID];
答案 1 :(得分:8)
这是正确的谓词:
[NSPredicate predicateWithFormat:@"SELF = %@", objectID];
其中objectID
是NSManagedObjectID
个实例。
答案 2 :(得分:3)
您可能希望查看-[NSManagedObject objectID]
和-[NSManagedObjectContext objectWithID:]
。
答案 3 :(得分:2)
构建表时,可以使用fetch返回的数组,也可以使用NSFetchResultsController
中的隐式数组。因此,您想要的对象在数组/控制器中具有与表中相同的索引。
所以,这只是一个问题:
myObject=[fetchedArray objectAtIndex:tableRowIndex];
或
myObject=[myFetchedResultsController objectAtIndexPath:tableRowIndex];
这是UITable的真正天才。它始终精确地反映数据模型。您永远不必在表索引和数据模型索引之间来回转换。