一开始写项目的时候,因为对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。
挖了个坑,后边慢慢补。