如何将ID添加到模型对象

时间:2014-11-17 21:08:05

标签: ios objective-c

我有一个待办事项列表,我的模型类是一个名为Targets的NSManagedObject的子类。

我的一个属性是NSNumber类型的“targetID”:

@property (nonatomic, retain) NSNumber * targetID;

我想给每个类对象一个ID ..

我该如何处理?

我知道这对你们大多数人来说可能是一个简单的任务,但这是我第一次这样做。

我有一个名为CreatePageViewController的视图控制器,它有一个文本视图子视图,另一个是ListTableViewController,它提供了所有这些...

我在何处,何时以及如何为每个Target对象提供ID?

2 个答案:

答案 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。