iOS开发过程中优雅的调试数据库
背景
在开发的时候,数据库的操作一直是一个很棘手的问题,后来发现Android下面有一个第三方的库还挺好用的,就模仿它搞了个iOS的,可以方便的通过浏览器查看、添加、删除、修改数据库。
历史状况
我们来回想一下调试的过程: 如果在模拟器中调试:
- 找到模拟器应用中数据库的文件位置
- 拷回到一个比较方便打开的地方
- 安装一个数据库操作软件
- 打开数据库文件
- select/insert/upate/delete...
- 拷会模拟器应用目录中
- 运行应用,查看结果
- 效果不理想,重复1-7步
如果是手机设备,就更麻烦了。。。
解决方案
要是有一个可以不用上面这些步骤、不用安装软件既可以随意操作数据库的方法,那就太好了。。。
还真有,先来看看效果:
-
列出数据库,显示数据库的表和选中表中的所有记录
![]()
-
条件查询
![]()
-
更新记录:
![]()
-
删除记录:
![]()
-
辅助功能:显示常用信息和userdefault的信息,如:
应用名字、版本号、build号、Document路径、Cache路径等等
集成方法:
Podfile
在 Podfile 中添加:
pod 'YYDebugDatabase'
如果是Swift项目,记得加上 use_frameworks!
use_frameworks!
pod 'YYDebugDatabase'
只在debug环境下使用的话,加上debug配置:
pod 'YYDebugDatabase', :configurations => ['Debug']
然后运行:
$ pod install
使用方法
在 AppDelegate.m中引入头文件:
#import YYDebugDatabaseManager.h
在 application:didFinishLaunchingWithOptions方法中添加代码:
[[DebugDatabaseManager shared] startServerOnPort:9002];
只在debug环境下使用
#ifdef DEBUG
[[DebugDatabaseManager shared] startServerOnPort:9002];
#end
如果是Swift项目:
在 Appdelegate.swift引入:
import YYDebugDatabase
在 application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?)添加代码:
DebugDatabaseManager.shared().startServer(onPort: 9002);
进阶
默认情况下,只显示document目录和cache目录线面的数据库,如果想显示其他目录的数据库,可以使用一下方法:
- (void)startServerOnPort:(NSInteger)port directories:(NSArray*)directories
例如:
NSString *resourceDirectory = [[NSBundle mainBundle] resourcePath];
NSString *databaseDirectory = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents/database"];
NSString *documentDirectory = [NSHomeDirectory() stringByAppendingPathComponent:@"Documnets"];
NSString *cacheDirectory = [NSHomeDirectory() stringByAppendingPathComponent:@"Library/Cache"];
[[DebugDatabaseManager shared] startServerOnPort:9002 directories:@[resourceDirectory, databaseDirectory, documentDirectory, cacheDirectory]];
Swift项目:
let directory:String = (Bundle.main.resourcePath)!;
let documentsPath:String = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)[0]
let cachePath:String = NSSearchPathForDirectoriesInDomains(.cachesDirectory, .userDomainMask, true)[0]
DebugDatabaseManager.shared().startServer(onPort: 9002, directories: [directory, documentsPath, cachePath]);
然后就可以在浏览器里方便的增删改查了。




浙公网安备 33010602011771号