首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >应用程序在保存核心数据时挂起

应用程序在保存核心数据时挂起
EN

Stack Overflow用户
提问于 2016-01-26 15:34:15
回答 2查看 456关注 0票数 1

我使用swift核心数据在应用程序中保存用户信息,但当它保存当前用户数据(姓名,简历,3-4张照片)时,它会挂起2-3秒,直到它保存数据。避免应用程序挂起的最好方法是什么?这是我正在使用的代码

代码语言:javascript
复制
       for photo in photos {
            let data = NSData(contentsOfURL: NSURL(string: photo.url!)!)
            let newimg = UIImage(data: data!)
            newusersImages.addObject(newimg!)
        }

        mayBeUser.name = currentuser!.objectForKey("name") as! String
        let arrayData = NSKeyedArchiver.archivedDataWithRootObject(newusersImages)
        let locationData = NSKeyedArchiver.archivedDataWithRootObject(currentuser!.objectForKey("location")!)


        mayBeUser.photos = arrayData
        mayBeUser.location = locationData
        mayBeUser.about = currentuser!.objectForKey("about") as! String
        mayBeUser.setValue(currentuser!.objectForKey("age") as! Int, forKey: "age")
        mayBeUser.objectId = currentuser!.objectId!
        mayBeUser.lastSeen = currentuser!.objectForKey("lastSeen") as! NSDate

        try! context.save()
        print("Current User Updated")

当用户有10-15个好友时,保存/更新用户的所有信息/数据需要挂起一分钟。

EN

回答 2

Stack Overflow用户

发布于 2016-01-26 15:58:13

这就是我会怎么做。现在很明显,您不希望UI挂起,因此您将希望使用具有私有队列并发类型的托管对象上下文。有关该here的更多信息。具体地说,请看末尾的部分,其中他详细介绍了如何创建导出函数。

现在,由于您在本例中将数据保存到持久性存储,因此您可能不希望用户在保存之前的更改时到处更改内容,在本例中,您可能需要一个显示保存进度的临时屏幕。

票数 0
EN

Stack Overflow用户

发布于 2016-01-26 18:52:51

您(和您的应用程序)必须努力将所有照片数据保存到User实体的一个属性中。相反,重构您的数据模型:

  1. 为照片创建单独的Photo实体。
  2. 不将照片图像数据存储在CoreData中-只存储带有URL的字符串。
  3. 添加从UserPhoto的多对多关系,而不是<代码>D10属性。<代码>H211<代码>G212

顺便说一句,我会避免使用CoreData作为属性名:它太接近objectIdobjectID了,这会引起混淆。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35008833

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档