我需要关于如何使用可以从服务器上传/下载并通过游戏中心发送的对象正确实现 CoreData 的建议。
该应用程序类似于集换式卡牌游戏,您可以从这两个独立的实体中获得灵感:
- 卡片:实际唯一的卡片,包含每张卡片的所有信息。“卡”的实体是静态的,不会改变,它们也不需要在服务器上发送,因为我需要做的就是发送“CardId”来拉“卡”实体。
- UserCard:用户拥有的所有卡,用户可能多次拥有同一张卡,但这将是一个不同的“UserCard”,带有指向基本“Card”的指针(“CardId”)。他们总是在变化。它们需要通过 GameCenter 轻松发送并从服务器上传/下载。此外,当用户访问朋友的个人资料以查看他们拥有哪些卡时,需要从服务器下载一些临时的“用户卡”。
有人对如何正确执行此操作有任何建议吗?目前我有两个想法:
A. 对所有内容都使用 CoreData,这意味着“UserCard”是 NSManagedObject 子类,它们被智能编码/解码(使用 NSCoding)以上传/下载并通过 GameCenter 发送。基本的“卡片”在 Core Data 中设置为关系。还为“UserCard”设置了“临时”属性,以便能够知道哪些不属于当前用户,以便以后可以将其删除。
B. 仅对基本“卡”使用 CoreData,对“用户卡”使用 NSObject 子类。这使我可以直接使用“UserCard”,而无需将它们插入 CoreData。使通过 GameCenter 下载/上传和发送变得更加容易。它还消除了对“临时”属性的需要,因为对象只会在视图停止使用它们时被释放。这种方法的问题是我需要另一种方法来将当前用户的“UserCard”存储在设备中,因为它们确实需要离线使用。
谢谢!