Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/118.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios Swift性能问题:从内存中的数据库加载反序列化对象,或在更新数据库条目时执行序列化/反序列化_Ios_Json_Swift_Serialization - Fatal编程技术网

Ios Swift性能问题:从内存中的数据库加载反序列化对象,或在更新数据库条目时执行序列化/反序列化

Ios Swift性能问题:从内存中的数据库加载反序列化对象,或在更新数据库条目时执行序列化/反序列化,ios,json,swift,serialization,Ios,Json,Swift,Serialization,我正在使用sqlite数据库来存储用户创建的应用程序内容。由于用户可以选择添加和编辑不限数量的不同对象,如testfields或ImageView,因此我使用序列化JSON将其作为字符串存储在sqlite数据库中 我的VC层次结构看起来有点简化,如下所示: ViewController |- ScrollView |- UIView 1 - representing one content item |- TextField - content element 1

我正在使用sqlite数据库来存储用户创建的应用程序内容。由于用户可以选择添加和编辑不限数量的不同对象,如testfields或ImageView,因此我使用序列化JSON将其作为字符串存储在sqlite数据库中

我的VC层次结构看起来有点简化,如下所示:

ViewController
|- ScrollView
   |- UIView 1 - representing one content item
      |- TextField - content element 1
      |- TextField - content element 2
      |- TextField ...
      |- ImageView ...
      |- ImageView ...
      |- potential other views
      |- ...
   |- UIView 2 ...       
现在的问题是,跟踪和更新这些对象的变化(内存和速度方面)最有效的模式是什么。我提出了两种可能的模式:

  • 在其中一个内容项UIView中创建的每个
    TextField
    ImageView
    等都是一个特定的子类,该子类获取包含所有内容元素的反序列化JSON内容项作为属性。在相应的编辑函数上,它更新反序列化的JSON对象,再次序列化它并更新数据库条目。问题是:所有其他内容元素对象也需要获得更新的反序列化JSON,并且需要类似于
    NotificationCenter
    的消息来发送更新的对象。此外,对于许多对象,它们都将在内存中保存整个反序列化JSON对象

  • 每个
    TextField
    ImageView
    等都只包含对内容项ID的引用,在更新元素时,内容元素将从sqlite db获取具有相应ID的内容项,对其进行反序列化、更新、再次序列化并更新db条目。潜在问题:每个
    选择查询->反序列化->更新对象->序列化->更新查询的整个过程是否会花费太长时间(例如,UI的延迟)

  • 有没有更好的模式