1

我想在 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 ,可能有问题吗?如果有的话,我应该在这里写什么?

请指导我

4

2 回答 2

3

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

您可以使用一个 URL 表示:

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

NSData如果你想保留它,你可以把它变成,但你也可以只序列化 URI。

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

注意:请UpperCaseNames仅用于课程,例如您应该使用lowerCaseName.

于 2013-04-08T06:34:22.727 回答
0

NSManagedObjectID不能那样工作,NSString.

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

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

如果它被保存,它将类似于

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

这两个版本都没有为-[NSString intValue]. 您可能会在最后提取整数,但这一点用处都没有,甚至一点用都没有。您不能在任何地方使用该整数值。

于 2013-04-08T17:04:02.713 回答