我有一个待办事项列表,我的模型类是一个名为Targets的NSManagedObject的子类。
我的一个属性是NSNumber类型的“targetID”:
@property (nonatomic, retain) NSNumber * targetID;
我想给每个类对象一个ID ..
我该如何处理?
我知道这对你们大多数人来说可能是一个简单的任务,但这是我第一次这样做。
我有一个名为CreatePageViewController的视图控制器,它有一个文本视图子视图,另一个是ListTableViewController,它提供了所有这些...
我在何处,何时以及如何为每个Target对象提供ID?
答案 0 :(得分:0)
NSManagedObject *newTarget = [NSEntityDescription insertNewObjectForEntityForName:@"Targets" inManagedObjectContext:yourManagedObjectContext];
[newTarget setValue:@25 forKey:@"targetID"];
// we must handle errors, but...
[yourManagedObjectContext save:nil];
获取对象。想象一下,你的Target对象具有以下属性: kindOfTaks:NSString。 endDate:NSTimeInterval(Double)。 而现在我将看到我的个人收入,我只有12个完成。排序。
NSFetchRequest *request = [[NSFetchRequest alloc] init];
[request setEntity:[NSEntityDescription entityForName:@"Targegts" inManagedObjectContext:yourManagedObjectContext]];
NSTimeInterval now = [[NSDate date] timeIntervalSince1970] ;
NSTimeInterval limit = now + 12*3600;
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"kindOfTaks ='personel' & endDate > %f & endDate < %f",now,limit];
[request setPredicate:predicate];
NSSortDescriptor *sort = [NSSortDescriptor sortDescriptorWithKey:@"endDate" ascending:YES];
NSArray *sorts = @[sort];
[request setSortDescriptors:sorts];
// Here the results and ordered array:
NSArray *objects = [yourManagedObjectContext executeFetchRequest:request error:nil];
答案 1 :(得分:0)
根据其他答案;在Core Data中,只有当您希望能够将本地数据与远程数据相关联时,才会添加ID字段。你不会只为当地使用添加一个。
这至少部分是因为Core Data已经使用自己的唯一ID为每个对象提供礼物。您可以访问任何托管对象上的objectID
属性来获取它。它是NSManagedObjectID
opaque类型的一部分,但您可以通过URIRepresenation
将其作为常规URI请求,当然任何NSURL
都可以存储为字符串。
从对象ID开始,您可以使用NSManagedObjectContext
&#39; s -existingObjectWithID:error:
来获取实际的托管对象。如果您拥有的只是网址,那么您可以让NSPersistentStoreCoordinator
通过-managedObjectIDForURIRepresentation:
将其映射到对象ID。
ID保证唯一,但只有在保存上下文或您明确询问上下文-obtainPermanentIDsForObjects:error:
后才会以最终形式显示。
NSFetchRequest
还有一个特殊功能,如果您对self in <a collection of NSManagedObjectIDs>
进行查询,查询实际上会返回托管对象而不是对象ID。