单身人士与核心数据

Evg*_*niy 1 iphone objective-c ios swift

这个问题不是技术问题,而是方法.

我知道在您的应用中存储从服务器接收的数据的两种或多种常见方法:

1)使用经理,数据持有者等来存储数据.它们通常是某种单例,用于存储从服务器接收的模型.(例如 - 帖子/地点/用户的数组)单身人士需要能够从任何屏幕访问数据.我认为大多数应用程序都使用这种方法.

2)使用核心数据(或可能是Realm)作为内存存储.这种方法避免了单例,但是,我想,维护和支持它有点复杂(并且有崩溃风险).

你如何存储数据?为什么?

PS任何答案都会有所帮助.但是有很多"谢谢"的详细信息,有理由.

Jac*_*ing 6

人们之所以选择使用核心数据/ Relam /鲨鱼或任何其他iOS ORM主要为宗旨坚持应用程序的运行之间的数据.

目前有两种方法可以实现这一点,对于单个值和非常小(不是我鼓励它)的对象,您可以使用它UserDefaults来在应用程序启动之间保持.对于更靠近数据库的方法,实际上在Core Data和SharkORM的情况下,它们构建在SQLite之上,您需要使用ORM.

使用管理器存储数据模型数组只会在应用程序的生命周期内保留所述模型.例如,当用户强制退出应用程序时,重新启动其设备,或者在某些情况下,当iOS终止您的应用程序时,所有数据都将永久丢失.这是因为它存储在RAM中,它是易失性存储器,而不是存储在磁盘本身的数据库中.

即使您没有特别要求启动之间的持久性,使用数据库层也可以发挥其优势; 例如,如果您不想使用内置的强大查询构建器,SharkORM允许您对对象执行原始SQL查询.这对于快速拉出您感兴趣的模型而不是迭代本地数组非常有用.

在回答您的问题时,该如何存储数据?好吧,我使用了三者的组合.比方说,我调用了一些API,我想在那里显示一些数据然后再向用户调用,我会使用带有数组的管理器实例来保存数据模型.但另一方面,如果我想存储该数据以供日后使用,或者如果我需要对其执行复杂查询,我会使用Shark将其存储在磁盘上.但是,如果我只是想存储用户是否已经看到我的登机流程,我只会保留一个布尔值UserDefaults.

我希望这对你来说足够详细.