ios - 从属性中建立核心数据关系的最快方法是什么?
<p><p>我正在对同步算法进行性能优化。</p>
<p>目前,iOS 应用从 Web API 接收大量 JSON。
在许多情况下,存在与关系相关的属性,例如:
PS。这是一个简化的例子。</p>
<pre><code>[
{
"name":"Alice",
"age": 18,
"key": "a001"
},
{
"name":"Bob",
"age": 18,
"key": "b002",
"parent":"a001"
},
]
</code></pre>
<p>给定 CoreData 中的模型:</p>
<p> <a href="/image/EucRh.png" rel="noreferrer noopener nofollow"><img src="/image/EucRh.png" alt="enter image description here"/></a> </p>
<p>下载 JSON 后,我需要将其保存到 Core Data 中。但是,我需要建立这些对象之间的关系。</p>
<p>目前,我正在coredata上搜索对象并建立关系,您如何在下面的示例中看到(PS。这是一个简化的示例):</p>
<pre><code>@IBAction func newItemTap(_ sender: Any) {
if let context = self.managedObjectContext {
let newPerson = Person(context: context)
newPerson.name = "Alice"
newPerson.age = 18
newPerson.key = "a001"
}
}
@IBAction func secondItemTap(_ sender: Any) {
if let context = self.managedObjectContext {
let fetchRequest = NSFetchRequest<NSFetchRequestResult>(entityName: "Person")
fetchRequest.fetchLimit = 1
fetchRequest.predicate = NSPredicate(format: "key = %@", "a001")
do {
if let results = try context.fetch(fetchRequest) as? {
if results.count > 0 {
let newPerson = Person(context: context)
newPerson.name = "Bob"
newPerson.age = 18
newPerson.key = "b002"
newPerson.parent = results.first as! Person?
}
}
} catch {
print("Error reading trips")
}
}
}
@IBAction func checkTap(_ sender: Any) {
if let context = self.managedObjectContext {
let fetchRequest = NSFetchRequest<NSFetchRequestResult>(entityName: "Person")
do {
if let results = try context.fetch(fetchRequest) as? {
for obj: Person in results {
print(obj.name ?? "")
print(obj.parent?.name ?? "<no parent>")
}
}
} catch {
print("Error reading trips")
}
}
}
</code></pre>
<p>我正在寻找一种快速建立关系的方法,如 secondItemTap 方法所示。</p>
<p>有人遇到并解决过这种性能问题吗?有什么建议吗?</p></p>
<br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
<p><p>我对<code>CoreData</code>不是很精通,所以我无法提供实际代码,但基本上可以归结为以下几点:</p>
<p>确保您的数据库在 <code>key</code> 属性上维护良好的索引。</p>
<p>根据您的数据库,在 <code>CoreData</code> 中可能有不同的定义方式,但从 <a href="https://stackoverflow.com/questions/7935348/what-does-the-indexed-property-of-a-coredata-attribute-do" rel="noreferrer noopener nofollow">this question</a> 判断它似乎真的可以归结为只是在数据定义的 <code>indexed</code> 属性上打勾(这非常接近它应该的样子)。</p></p>
<p style="font-size: 20px;">关于ios - 从属性中建立核心数据关系的最快方法是什么?,我们在Stack Overflow上找到一个类似的问题:
<a href="https://stackoverflow.com/questions/49948721/" rel="noreferrer noopener nofollow" style="color: red;">
https://stackoverflow.com/questions/49948721/
</a>
</p>
页:
[1]