Ios Swift性能问题:从内存中的数据库加载反序列化对象,或在更新数据库条目时执行序列化/反序列化
我正在使用sqlite数据库来存储用户创建的应用程序内容。由于用户可以选择添加和编辑不限数量的不同对象,如testfields或ImageView,因此我使用序列化JSON将其作为字符串存储在sqlite数据库中 我的VC层次结构看起来有点简化,如下所示: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
ViewController
|- ScrollView
|- UIView 1 - representing one content item
|- TextField - content element 1
|- TextField - content element 2
|- TextField ...
|- ImageView ...
|- ImageView ...
|- potential other views
|- ...
|- UIView 2 ...
现在的问题是,跟踪和更新这些对象的变化(内存和速度方面)最有效的模式是什么。我提出了两种可能的模式:
TextField
,ImageView
等都是一个特定的子类,该子类获取包含所有内容元素的反序列化JSON内容项作为属性。在相应的编辑函数上,它更新反序列化的JSON对象,再次序列化它并更新数据库条目。问题是:所有其他内容元素对象也需要获得更新的反序列化JSON,并且需要类似于NotificationCenter
的消息来发送更新的对象。此外,对于许多对象,它们都将在内存中保存整个反序列化JSON对象TextField
,ImageView
等都只包含对内容项ID的引用,在更新元素时,内容元素将从sqlite db获取具有相应ID的内容项,对其进行反序列化、更新、再次序列化并更新db条目。潜在问题:每个选择查询->反序列化->更新对象->序列化->更新查询的整个过程是否会花费太长时间(例如,UI的延迟)