【问题标题】:Saving last NSManagedObject before exit and retrieval - core data在退出和检索之前保存最后一个 NSManagedObject - 核心数据
【发布时间】:2012-02-12 14:45:51
【问题描述】:

我使用nsfetchedresultscontroller 来维护实体“产品”。 但是我设置了一个谓词"forUser==%@", currentUser",用户是另一个实体。

虽然我可以在运行时加载 currentUser,但我想将“CurrentUser”保存在 nsuserdefaults 中的某处,在 SQL 中我会保存该用户的 primaryKey, 在 appDidFinishLaunching 上,我可以抓住它并获取实体。

当涉及到 NSUserDefaults 中的实体时,我不确定我应该保存什么。

我不想添加额外的属性

“上次访问”

对于用户来说,因为一次只有一个当前用户,所以只需要相同的某种 ID 是有意义的。我可以保存姓氏或名字,但正在考虑一种更好的方法,比如某种整数 ID。

保存NSManagedObjectID URI 也是一种选择,但如果发生任何迁移或核心数据图更改,这将改变,并在更新时破坏应用程序。

请帮助我在核心数据中理解这一点。

【问题讨论】:

  • 那么 User 实体有唯一的属性吗?说身份证?然后您可以将该 id 保存在 NSUSerDefaults 中。
  • 我没有添加任何内容,认为它全部由 Coredata 模型处理。可能不需要 Integer primaryKey 因为核心数据为 is,但不使其可用?到目前为止,用户还没有 ID 属性。我在想另一种方法吗?...除了添加一个新的 ID 之类的属性?
  • 您必须根据您提到的用例添加一个 id。您想将其存储在 NsUserDefaults 中
  • 你的权利@mbh 这似乎是唯一的出路。我决定使用 UUID,以防用户是唯一的并在 iCloud 上共享,如果您将其写为答案,我会接受您的答案..
  • 哈哈是真的。我现在确实将其发布为答案。但我猜为时已晚!

标签: iphone objective-c ios core-data nsmanagedobject


【解决方案1】:

您已经回答了自己的问题。你是说你想要一种唯一标识用户的方法。

如果用户没有唯一标识属性,那么您只有NSManagedObjectID URI。但这可能会在迁移过程中发生变化。

所以你需要添加一个唯一标识用户的属性,或者至少唯一标识最后一个用户。

【讨论】:

  • 是的,如果我不得不添加一个 UID,那会很遗憾,谢谢你说清楚。 d 使用 UUID? 'NSString *uuid = nil; CFUUIDRef theUUID = CFUUIDCreate(kCFAllocatorDefault); if (theUUID) { uuid = NSMakeCollectable(CFUUIDCreateString(kCFAllocatorDefault, theUUID)); [uuid 自动释放]; CFR 释放(UUID); }' 如果我决定使用 iCloud?
  • 只需使用 NSManagedObjectID,无需创建另一个 UUID。如果您需要迁移,只需存储旧的对象 ID,然后迁移,然后获取新的对象 ID。然后将其存储在用户默认值中。这是对象 ID 的用途之一。
【解决方案2】:

根据您提到的用例,您必须添加一个 id。你想把它存储在 NsUserDefaults 中吧?

【讨论】:

猜你喜欢
  • 2023-03-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-01
  • 2014-09-28
  • 1970-01-01
相关资源
最近更新 更多