我正在尝试从纯 sqlite(使用 FMDB 包装器)迁移到核心数据。
我的主要原因是 icu 问题(我有一些多语言项目 - 德语、西班牙语、希腊语、中文)很难从 sqlite 中搜索到,而不是核心数据上内置的 icu。(NSDiacriticInsensitive | NSCaseInsensitive)
通常,我的数据(编码书)具有以下结构:
id
parentId
content
contentType
nContent
vieworder
其中 nContent 是我需要放弃的变音符号/不区分大小写的字段,因为它会大大降低我的数据库速度(我使用了索引,我使用了优化,但我找不到任何东西来加快搜索过程)。
我对核心数据概念感到困惑——我可以在主从项目中理解它,但我无法理解如何实现自引用项目对象——
使用上述结构存储的典型数据是这样的:
Chapter A
Chapter A.1
Title 1
Content #1
Title 2
Content #2
Chapter A.2
[...]
其中“章节/标题/内容”是内容字段(因此它从大于 256 的小字符串到大文本块不等)。
所以我的问题是: * 如何在核心数据实体/类中实现这种结构(我知道它需要自引用关系) * 如何找到每个级别的项目(例如我想找到所有 Title 类型-- 这就是我有 contentType 字段的原因) * 在核心数据结构上索引它是否会为我提供比普通 sql 更好的索引和更好的时间搜索率(我在 nContent 字段上使用 LIKE %% 结构)?* 将它留在 SQLITE 上并尝试寻找不同的索引策略会更好吗?
请随时回答这些问题或至少给我一个见解。
这里的更新 是我的意思的另一个更“现实”的例子:
Beginning HTML (Type: Chapter, parentid:0,id:1)
The fundamental pieces (Type Chapter, parentid:1, id:2)
How to begin (Type: title, parentid:2, id:3)
[content] (Type: content, parentid:3, id:4)
Using paragraphs (Type title, parentid:2, id:5)
[content] (Type: content, parentid:5, id:6)
Using Forms (Type: chapter, parentid:1, id:7)
... (and so on)