【发布时间】:2017-04-17 15:06:05
【问题描述】:
我在将包含图像的 NSAttrbutedString 保存到 Core Data 时遇到了这个巨大的性能问题。
有一个 UITextView 允许用户输入文本以及添加图像。当用户完成输入并单击“完成”按钮时,它将被保存到 CoreData,并显示在 TableView 中。
点击“完成”按钮时我如何保存内容:
创建一个私有 MOC 并将 AppDelegates managedObjectContext 分配为其父 MOC。
privateMOC = NSManagedObjectContext(concurrencyType: .privateQueueConcurrencyType)
privateMOC.parent = managedObjectContext
privateMOC.perform {
do {
try self.privateMOC.save()
self.managedObjectContext.performAndWait {
do {
try self.managedObjectContext.save()
} catch {
fatalError("Failure to save context: \(error)")
}
}
} catch {
print("Could not save \(error)")
}
}
有两个问题:
取决于图像,当我单击“完成”按钮时,UI 被阻止,需要 3 - 5 秒后视图才会消失并显示在 TableView 中。
我查看了实际的数据库.sqlite 发现,一个新添加的条目(UITextView 中的文本和图像)使得数据库大小几乎增加了12MB! (也许图片占用太多空间?)
对如何解决这些问题有什么建议吗? 谢谢!
【问题讨论】:
标签: ios sqlite core-data nsattributedstring