我想在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,可能有问题吗?如果有的话,我应该在这里写什么呢?
请给我指引
发布于 2013-04-08 14:34:23
我认为你不应该使用对象id作为私钥。它不是整数,有自己的表示法。NSManagedObjectID实际上是为了持久化对特定实体的引用,例如在用户默认设置中,或者跨持久性存储创建弱引用("joins")。
您可以使用以下URL表示法:
NSURL *uri = [[myObject objectID] URIRepresentation];如果您想保留它,可以将其转换为NSData,但也可以只序列化URI。
如果您需要传统的私钥,例如与服务器上数据的另一个实例进行通信,您应该创建自己的私钥作为实体的属性。但不要滥用它们来替换托管对象模型关系。
注意:请仅对类使用UpperCaseNames,对于实例应使用lowerCaseName。
发布于 2013-04-09 01:04:03
NSManagedObjectID不是这样工作的,NSString也不是这样。
如果托管对象尚未保存,则对象ID的绝对字符串将如下所示:
x-coredata:///Entity/tE7D63E10-8BE4-41CE-A6DC-C131F6990F062如果它已被保存,它将类似于
x-coredata://F869550C-914E-4160-B8A7-9DD9A82F2CE2/Entity/p2这两个版本都没有为-[NSString intValue]提供任何好的目标。您可能会在最后提取整数,但这没有任何用处,甚至一点用处也没有。你不能在任何地方使用这个整数值。
https://stackoverflow.com/questions/15871957
复制相似问题