Ios 当I';采购订单';lldb中的核心数据对象?
在lldb中打印核心数据对象的对象描述时,有时会得到以下对象描述: (lldb)po my_challenge_对象 (实体:质询;id:0x170433460;数据:{…}) 如果以后打印同一对象,有时会看到“x-coredata”路径发生更改 (实体:质询;id:0x170433460;数据:{…})Ios 当I';采购订单';lldb中的核心数据对象?,ios,objective-c,core-data,Ios,Objective C,Core Data,在lldb中打印核心数据对象的对象描述时,有时会得到以下对象描述: (lldb)po my_challenge_对象 (实体:质询;id:0x170433460;数据:{…}) 如果以后打印同一对象,有时会看到“x-coredata”路径发生更改 (实体:质询;id:0x170433460;数据:{…}) 我的问题是,这条道路意味着什么,为什么会改变?在这种情况下,添加“50232AB5-7372-4628-9F00-51BDB1A5C96D”对我的对象有什么影响?每个NSManagedObje
我的问题是,这条道路意味着什么,为什么会改变?在这种情况下,添加“50232AB5-7372-4628-9F00-51BDB1A5C96D”对我的对象有什么影响?每个
NSManagedObject
都有一个objectID
。
您在对象描述中看到的是
[[object objectID] URIRepresentation]
从objectID
的文档中:
重要提示:如果尚未保存接收器,则对象ID为
保存对象时将更改的临时值
以及“核心数据编程指南”:
NSManagedObjectID
对象是托管对象的通用标识符
对象,并为核心数据框架中的uniquing提供基础。A.
托管对象ID唯一标识两个对象的同一个托管对象
在单个应用程序中的托管对象上下文之间,以及
多个应用程序(如在分布式系统中)。就像初选一样
在数据库中,标识符包含所需的信息
准确描述持久存储中的对象,尽管
详细信息不公开。整个框架
封装“外部”信息并呈现干净的对象
面向对象的接口
实际需要托管对象ID的一种情况是传递
从一个托管对象上下文到不同上下文的托管对象。首次打印尚未分配给持久存储的对象时:
(lldb) po my_challenge_object
<Challenge: 0x1700da1d0> (entity: Challenge; id: 0x170433460 <x-coredata:///Challenge/t52BD558C-A8FE-4064-A8BE-217A837521E52> ; data: {...})
因此,听起来好像如果我还没有保存对象,则对象的表示形式不应该更改。如果是这样的话,我不明白为什么代表性在改变。@kross:这是个好问题。再看看你的问题,两个对象ID看起来都像一个临时ID(比较一下永久ID的分析),但我实际上没有看到第二个ID。中间的对象会发生什么?是否使用嵌套上下文?-另一方面,准确的表示应该无关紧要,也没有文档记录。你知道深入研究这些数据的技术吗?
<Challenge: 0x1700da1d0> (entity: Challenge; id: 0x170433460 <**x-coredata://50232AB5-7372-4628-9F00-51BDB1A5C96D/Challenge/t52BD558C-A8FE-4064-A8BE-217A837521E52**> ; data: {...})
NSLog(@"Store Identifier: %@", [store identifier]);