【发布时间】:2016-11-15 04:40:37
【问题描述】:
我正在努力弄清楚如何构建一个核心数据模型来支持我在我的应用中创建的类结构。
我的应用有用户,我允许这些用户使用多种不同的身份验证方法登录应用。每种身份验证方法都需要稍微不同的凭据和凭据类型。我选择通过创建一个抽象的AuthenticationSettings 基类来解决这个问题,然后使用FacebookAuthenticationSettings、TwitterAuthenticationSettings、MyWebsiteAuthenticationSettings 等对其进行子类化。
我的User 类有一个属性authSettings(AuthenticationSettings 类型),它存储一个设置类的实例。每个用户只能使用一种身份验证方法,因此效果很好。
问题是,鉴于authSettings 可以存储多种对象类型之一,我该如何为我的用户创建核心数据模型?
是否为每种类型的身份验证创建单独的实体,然后在这些实体和用户实体之间创建关系?这很奇怪,因为数据模型不会对用户强制执行 1:1 的身份验证方法。在获取用户时,我还必须获取他们相应的身份验证方法。
我是否只是创建自己的身份验证凭据的序列化编码并将其塞入用户实体的字符串字段中?这迫使我发明一些编码,如果任何未来的身份验证方法使用难以序列化为字符串的字段,这种编码会感觉特别混乱。
有没有更好的办法?
【问题讨论】:
标签: objective-c database core-data data-modeling foundation