我将数以万计的对象插入到我的Core Data实体中.我有一个NSManagedObjectContext,save()每次添加对象时我都会调用托管对象上下文.它可以工作,但在运行时,内存从大约27M增加到400M.即使在导入完成后它仍然保持在400M.
关于批量插入有很多SO问题,每个人都说阅读Efficiently Importing Data,但是它在Objective-C中,我很难在Swift中找到解决这个问题的真实例子.
我使用核心数据存储了 10000-20000 条记录。如果我尝试保存和获取 10000 条记录,内存和 CPU 消耗很大,因为该应用程序在 iphone 6 plus 和更早的设备中崩溃。
以下是保存方法:----
//InboxCoredata Saving Method i..(calling saving method ii)
func InboxSaveInCoreDataWith(array: [[String: AnyObject]])
{
_ = array.map{self.InboxCreateCollectionEntityFrom(dictionary: $0)}
do
{
try CoreDataStack.sharedInstance.persistentContainer.viewContext.save()
print("Inbox Data saved Sucessfully in Coredata ")
}
catch let error
{
print(error)
}
}
// Inbox Coredata saving method ii
func InboxCreateCollectionEntityFrom(dictionary: [String: AnyObject]) -> NSManagedObject?
{
let context = CoreDataStack.sharedInstance.persistentContainer.viewContext
if let inboxEntity = NSEntityDescription.insertNewObject(forEntityName: "InboxData", into: context) as? InboxData {
inboxEntity.fileType = dictionary["FileType"] as? String …Run Code Online (Sandbox Code Playgroud)