FMDatabaseQueue接触心得

一开始写项目的时候,因为对FMDB和SQLite不够熟悉(以前更多的是使用其他的方式存储,数据量都不大),后来用老的思路去继续做项目,发现线程问题去同时使用数据库,会导致The FMDatabase is currently in use.的问题。

后面开始去找对应的解决方法,于是乎找到了FMDatabaseQueue,

使用很简单

使用的时候发现了个问题:

如果使用FMDatabaseQueue的inData的Block的时候,再里面加GCD去执行操作逻辑,那么虽然可以成功,但是另外的FMDatabaseQueue在使用时,就会提示The FMDatabaseis currently in use,然后操作就失败了,甚至可能会导致崩溃。

(⬆️  FMDatabaseQueue的Block中去使用GCD)


所以对于原来使用FMDatabase的时候使用的GCD加代理,采取GCD中去使用FMDatabaseQueue,就可以正常的安全的使用FMDatabaseQueue了,不会再有冲突的问题。

(⬆️  GCD中去使用FMDatabaseQueue的Block)

当然,对于自己原来挖的坑,没时间只能这样补了,要是有时间,还是正正经经的去用FMDatabaseQueue的block即可,加上return,应该是可行的,没时间详细测试这种状况会不会有因为时差导致的return nil的状况,个人觉得queue应该有处理,即便真的因为时间差导致了这个问题,那么还是使用GCD的来解决也OK。


挖了个坑,后边慢慢补。

你可能感兴趣的:(FMDatabaseQueue接触心得)