当我的对象具有任意 属性 数据时,如何设置我的核心数据模型?
How do I set up my Core Data model when my objects have arbitrary property data?
我正在努力弄清楚如何构建一个核心数据模型来支持我在我的应用程序中创建的 class 结构。
我的应用程序有用户,我允许这些用户使用多种不同的身份验证方法登录到应用程序。每种身份验证方法都需要略有不同的凭据和信用类型。我选择通过创建抽象 AuthenticationSettings
基础 class 来解决这个问题,然后用 FacebookAuthenticationSettings
、TwitterAuthenticationSettings
、MyWebsiteAuthenticationSettings
子class,等等
我的 User
class 有一个 属性 authSettings
(类型 AuthenticationSettings
),它存储其中一个设置的实例 class是的。每个用户只允许使用一种身份验证方法,因此效果很好。
问题是,鉴于 authSettings
可以存储多种对象类型之一,我如何为我的用户创建核心数据模型?
我是否为每种类型的身份验证创建单独的实体,然后在这些实体与用户实体之间创建关系?这很奇怪,因为数据模型没有对用户强制执行 1:1 身份验证方法。获取用户时,我还必须获取他们相应的身份验证方法。
我是否只是创建自己的 auth creds 序列化编码并将其塞入用户实体的字符串字段中?这迫使我发明一些编码,如果未来的任何身份验证方法使用难以序列化为字符串的字段,这种编码会感觉特别混乱。
有没有更好的方法?
一种方法是设置与您的 class 层次结构平行的核心数据实体层次结构。在 Core Data 中创建一个名为 AuthenticationSettings
的抽象实体,并为每种身份验证类型创建一系列子实体。与您的 User
class 属性 一样,创建与 AuthenticationSettings
.
的关系
一种听起来可以满足您需求的更简单的方法是使您的各种身份验证 class 符合 NSCoding
,然后将它们存储在一个 "transformable" 中(不是字符串)用户实体上的字段。然后,Core Data 会自动转换身份验证对象 to/from NSData
。
我正在努力弄清楚如何构建一个核心数据模型来支持我在我的应用程序中创建的 class 结构。
我的应用程序有用户,我允许这些用户使用多种不同的身份验证方法登录到应用程序。每种身份验证方法都需要略有不同的凭据和信用类型。我选择通过创建抽象 AuthenticationSettings
基础 class 来解决这个问题,然后用 FacebookAuthenticationSettings
、TwitterAuthenticationSettings
、MyWebsiteAuthenticationSettings
子class,等等
我的 User
class 有一个 属性 authSettings
(类型 AuthenticationSettings
),它存储其中一个设置的实例 class是的。每个用户只允许使用一种身份验证方法,因此效果很好。
问题是,鉴于 authSettings
可以存储多种对象类型之一,我如何为我的用户创建核心数据模型?
我是否为每种类型的身份验证创建单独的实体,然后在这些实体与用户实体之间创建关系?这很奇怪,因为数据模型没有对用户强制执行 1:1 身份验证方法。获取用户时,我还必须获取他们相应的身份验证方法。
我是否只是创建自己的 auth creds 序列化编码并将其塞入用户实体的字符串字段中?这迫使我发明一些编码,如果未来的任何身份验证方法使用难以序列化为字符串的字段,这种编码会感觉特别混乱。
有没有更好的方法?
一种方法是设置与您的 class 层次结构平行的核心数据实体层次结构。在 Core Data 中创建一个名为 AuthenticationSettings
的抽象实体,并为每种身份验证类型创建一系列子实体。与您的 User
class 属性 一样,创建与 AuthenticationSettings
.
一种听起来可以满足您需求的更简单的方法是使您的各种身份验证 class 符合 NSCoding
,然后将它们存储在一个 "transformable" 中(不是字符串)用户实体上的字段。然后,Core Data 会自动转换身份验证对象 to/from NSData
。