核心NSManagedObjectID始终在iphone中返回对象0

时间:2013-04-08 05:37:51

标签: iphone objective-c xcode core-data

我想在Iphone的核心数据中获取主键值,所以我使用NSManagedObjectID来获取objectID(与PK值大致相同)但是我遇到的问题是它总是返回0

这是我的代码块

-(NSManagedObject *)existingObjectWithID:(NSManagedObjectID *)objectID
{

Maintness_Item *MainItem1; // my object model 
NSManagedObjectID *yourManagedObjectID = [ MainItem1 objectID];
int yourManagedObject_PK = [[[[[yourManagedObjectID URIRepresentation] absoluteString]    lastPathComponent] substringFromIndex:1] intValue];
NSLog(@"This is my managed object ID ...................%d",yourManagedObject_PK);

return 0;
}

注意:这里我回来0,可能有问题吗?如果有的话我应该在这里写什么?

请指导我

2 个答案:

答案 0 :(得分:3)

我认为你不应该使用对象id作为私钥。它不是一个整数,有自己的表示。 NSManagedObjectID确实存在于例如持久引用特定实体的情况。用户默认值,或跨持久存储创建弱引用(“连接”)。

您可以使用以下网址表示:

NSURL *uri = [[myObject objectID] URIRepresentation];

如果您想保留它,可以将其转换为NSData,但您也可以将序列化URI。

如果您需要经典私钥,例如要在服务器上与数据的另一个实例进行通信,您应该创建自己的实体属性。只是不要滥用它们来替代托管对象模型关系。

注意:请UpperCaseNames仅针对课程,例如,您应使用lowerCaseName

答案 1 :(得分:0)

NSManagedObjectID不起作用,NSString也不行。

如果尚未保存托管对象,则对象ID的绝对字符串将类似于:

x-coredata:///Entity/tE7D63E10-8BE4-41CE-A6DC-C131F6990F062

如果已保存,则类似

x-coredata://F869550C-914E-4160-B8A7-9DD9A82F2CE2/Entity/p2

这两个版本都没有为-[NSString intValue]提供任何好的目标。你可以在最后提取整数,但这对任何方式都没有用,甚至没有一点。您无法在任何地方使用该整数值。