我是Core Data的新手,并且在概念上与其中的一些进行斗争(相对于SQL,我理解).
我正在尝试构建一个模型,为简单起见,它看起来像:
"Category" entity, which has a name, and a relationship to-many Products
"Product" entity, which has a name
Run Code Online (Sandbox Code Playgroud)
我希望name两个实体中的那些s(字符串)存储本地化变体.这意味着另一次加入.有少量可能的本地化.我知道我可以将每个本地化作为一个单独的属性("name_en","name_de"等),但这不能扩展,我想要理解实现这一目标的"正确"方法.
我的直觉告诉我,我想要两个更多的实体,一个Localizations(实际上只包含一组可能的本地化)和一些LocalizedString,它们与Localization相关.但Xcode警告我没有建立反向关系等.
能够深入了解Core Data模型设计的人能帮助新手了解如何思考这个问题吗?
(我的下一个问题是构建奇怪的多透视用户界面,让您为每个可用的本地化设置名称,但这将是另一组调查.:))
Mat*_*uch 14
我不知道我是否有资格成为了解核心数据的人,但我过去曾经使用过这样的东西:

namein Something是英文名.因此,我不必在英语设备中搜索关系(其中我的应用程序覆盖了70%的设备).
并且localizedName在Something子类中调用了一个getter ,它返回名称或当前使用的语言代码的字符串.
当我这样做时,我认为我可以在name属性中保存本地化字符串,因为语言通常不会在开发人员不使用的设备上经常更改.但最后我决定反对这一点,因为这不是性能问题.
我认为可以用来对抗不存在的性能问题的另一种变体:

currentLanguageString基本上指向当前语言的本地化字符串.每次语言更改时都会更改(在99.9%的情况下,这种情况会在应用程序首次启动时发生一次).
如果你在Something实体中有多个字符串,我会创建LocalizedString一个专门为你想要本地化的字符串创建的子类的抽象父类.
您必须使用这种奇怪的结构,因为您无法创建与多个实体的关系.

或者,如果您知道自己在做什么,请忽略"无反向关系"警告

但如果你这样做,你必须确保你永远不会删除LocalizedString仍在使用的对象.您不希望以不一致的存储结束.
| 归档时间: |
|
| 查看次数: |
2628 次 |
| 最近记录: |