首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >核心NSManagedObjectID在iphone中总是返回object 0

核心NSManagedObjectID在iphone中总是返回object 0
EN

Stack Overflow用户
提问于 2013-04-08 13:37:51
回答 2查看 1.3K关注 0票数 1

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

下面是我的代码块

代码语言:javascript
复制
-(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,可能有问题吗?如果有的话,我应该在这里写什么呢?

请给我指引

EN

回答 2

Stack Overflow用户

发布于 2013-04-08 14:34:23

我认为你不应该使用对象id作为私钥。它不是整数,有自己的表示法。NSManagedObjectID实际上是为了持久化对特定实体的引用,例如在用户默认设置中,或者跨持久性存储创建弱引用("joins")。

您可以使用以下URL表示法:

代码语言:javascript
复制
NSURL *uri = [[myObject objectID] URIRepresentation];

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

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

注意:请仅对类使用UpperCaseNames,对于实例应使用lowerCaseName

票数 3
EN

Stack Overflow用户

发布于 2013-04-09 01:04:03

NSManagedObjectID不是这样工作的,NSString也不是这样。

如果托管对象尚未保存,则对象ID的绝对字符串将如下所示:

代码语言:javascript
复制
x-coredata:///Entity/tE7D63E10-8BE4-41CE-A6DC-C131F6990F062

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

代码语言:javascript
复制
x-coredata://F869550C-914E-4160-B8A7-9DD9A82F2CE2/Entity/p2

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15871957

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档