Iphone 通过objectID跟踪CoreData中访问的对象?

Iphone 通过objectID跟踪CoreData中访问的对象?,iphone,ipad,core-data,Iphone,Ipad,Core Data,我希望CoreData中有一个表,其中包含我访问过的其他CoreData对象的列表,例如,我有客户端,我希望有一个表RecentClient,其中只包含此列表和访问日期 我是否可以存储objectID,然后根据它执行提取请求 编辑: 请参见下面Ben的答案,然后点击此处: 您只需在核心数据模型中将RecentClient创建为另一个实体即可。然后,它将与客户机实体建立一对多关系。您只需在核心数据模型中将最近的客户机创建为另一个实体即可。然后,它将与客户端实体建立一对多关系。您需要通过调用NSMa

我希望CoreData中有一个表,其中包含我访问过的其他CoreData对象的列表,例如,我有客户端,我希望有一个表RecentClient,其中只包含此列表和访问日期

我是否可以存储objectID,然后根据它执行提取请求

编辑: 请参见下面Ben的答案,然后点击此处:

您只需在核心数据模型中将RecentClient创建为另一个实体即可。然后,它将与客户机实体建立一对多关系。

您只需在核心数据模型中将最近的客户机创建为另一个实体即可。然后,它将与客户端实体建立一对多关系。

您需要通过调用NSManagedObjectID的-URIRepresentation方法将其转换为字符串。然后,可以使用NSPersistentStore的-managedObjectedForUriRepresentation:方法将字符串转换回NSManagedObjectID


如果您存储了字符串,您应该能够执行所描述的操作,尽管您不会使用fetch请求;您将使用-[NSManagedObjectContext objectWithID::://p>您将希望通过调用NSManagedObjectID的-URIRepresentation方法将其转换为字符串。然后,可以使用NSPersistentStore的-managedObjectedForUriRepresentation:方法将字符串转换回NSManagedObjectID


如果您存储了字符串,您应该能够执行所描述的操作,尽管您不会使用fetch请求;您将使用-[NSManagedObjectContext objectWithID::][/p>您计划如何存储访问日期?如果将其作为客户端实体的属性,则可以在每次访问对象时对其进行碰撞,然后使用NSFetchedResultsController获取按访问日期排序的客户端。当然,缺点是每次访问时都要修改实例,这可能并不理想。

您打算如何存储访问日期?如果将其作为客户端实体的属性,则可以在每次访问对象时对其进行碰撞,然后使用NSFetchedResultsController获取按访问日期排序的客户端。当然,缺点是每次访问实例时都要对其进行修改,这可能并不理想。

非常好。如果要从一次运行持续到下一次运行,您会使用这些吗?显然可以,但我想知道你们是否会建议修改数据模型。这对我来说是一个外围问题,因此我很感兴趣。(我认为这不值得提出自己的“问题”。)objectid是持久的。如果您将URI表示写入磁盘,并在后续运行时使用它查找objectID,那么您将返回最初用于创建URI的相同ID,并且(假设对象仍然存在)此objectID仍将标识相同的原始托管对象。只有在首次保存对象后,objectID才会持久化。新创建的对象的objectID在第一次保存时会发生更改。Aderstedt提出了一个很好的观点,如果您不知道,这可能会导致问题。在将objectid保存到持久存储之前跟踪它们时,我遇到了一大堆问题。仅对已保存到存储区的对象使用这些。NSManagedObjectContext上有一个函数可用于为尚未保存的对象生成永久ID,但请注意,它与保存上下文具有相同的性能影响。非常好。如果要从一次运行持续到下一次运行,您会使用这些吗?显然可以,但我想知道你们是否会建议修改数据模型。这对我来说是一个外围问题,因此我很感兴趣。(我认为这不值得提出自己的“问题”。)objectid是持久的。如果您将URI表示写入磁盘,并在后续运行时使用它查找objectID,那么您将返回最初用于创建URI的相同ID,并且(假设对象仍然存在)此objectID仍将标识相同的原始托管对象。只有在首次保存对象后,objectID才会持久化。新创建的对象的objectID在第一次保存时会发生更改。Aderstedt提出了一个很好的观点,如果您不知道,这可能会导致问题。在将objectid保存到持久存储之前跟踪它们时,我遇到了一大堆问题。仅对已保存到存储区的对象使用这些。NSManagedObjectContext上有一个函数可用于为尚未保存的对象生成永久ID,但请注意,它与保存上下文具有相同的性能影响。这就是我正在做的,但我只需要查看最近的客户表,找到唯一标识实体的方法,这就是我询问objectID的原因。这就是我正在做的,但我只需要查看最近的客户表,找到唯一标识实体的方法,这就是我问objectID的原因。这是一个简单得多的解决方案,如果上面的人不相信我做的比它需要的复杂得多,我将使用它。我给了Ben credit的答案,因为他回答了我的问题,但你给了我一个更好的解决方案-谢谢。这是一个更简单的解决方案,我将用它来代替,如果上面提到的-无法相信我做的比它需要的复杂多了。我给了Ben credit的答案,因为他回答了我问的问题,但你给了我一个更好的解决方案-谢谢。