huangzhibiao / bgfmdb Goto Github PK
View Code? Open in Web Editor NEWBGFMDB让数据的增删改查分别只需要一行代码即可,就是这么简单任性,本库几乎支持存储ios所有基本的自带数据类型.
BGFMDB让数据的增删改查分别只需要一行代码即可,就是这么简单任性,本库几乎支持存储ios所有基本的自带数据类型.
大神 无法加入你的QQ Group 交流
FMDB是有个interrupt接口,来取消当前执行的线程操作。但是BGFMDB并没有提供?
//转换从数据库中读取出来的数据.
+(NSArray*)tansformDataFromSqlDataWithTableName:(NSString*)tableName class:(__unsafe_unretained _Nonnull Class)cla array:(NSArray*)array{
NSMutableArray* arrM = [NSMutableArray array];
for(NSDictionary* dict in array){
id object = [BGTool objectFromJsonStringWithTableName:tableName class:cla valueDict:dict];
[arrM addObject:object];
}
return arrM;
}
最近在使用这个框架,把解析与存储结合起来,非常人性化,
关于字典转模型,有几个小的建议:
1.增加替换变量的功能,如:
(NSDictionary *)mj_replacedKeyFromPropertyName {
return @{@"addressId":@"id"};
}
2.增加一个字典数组转模型数组功能,如-mj_objectArrayWithKeyValuesArray: (解析时可选存储更好)
如何需要实现左关联和右关联查询数据
11.2 iphoneX crash in BGTool.m 913 line "-[__NSDictionaryM containsString:]: unrecognized selector" when -beginTransformAction:
一个用户对应一个数据库文件
在 stockModel 裡將 bg_uniqueKeys 移除,會無法再新增相同name的資料
但我在people裡使用 bg_uniqueKeys 可防止重復插入相同name資料
再將 bg_uniqueKeys 移除,也可以再新增相同name的資料
以上這些情況都是發生在已經編譯過之後的再次修改。
在使用 uniqueKeys 是否有編譯順序的差別呢?
我增加了一个属性字段,然后我看到在自动检查有没有新字段时有问题,前面一句select table limit 0,1 的返回结果rs.next 的结果一直是no,然后就没有去检查新字段,然后inset就会报没有新字段的错误。
pod search BGFMDB
[!] Unable to find a pod with name, author, summary, or description matching BGFMDB
BGProtocol协议建议增加类似黑名单 白名单的接口 固定不解析/解析某些属性
还是那个答题类的项目引出的问题:比如50道题,用bg_saveOrUpdateArray方法存储,模型的bg_tableName赋值为@“questionTable”,用户全部答完,答对了40道,错了10道,用户选择交卷以后,进入一个选择结果的界面,该页面有“查看本次对题”,“查看本次错题”的选项,这时如果用户选择查看错题,我需要从原来的表中查询出这10道题,对这10道题再存入一个错题的表中,用于后继的连续性显示的需要,我用的是依然是bg_saveOrUpdateArray这个方法,只不过,这10道题对应的模型的bg_tableName重新赋值为比如叫@“wrongTable”,这时发现wrongTable表创建成功,但是数据无法插入,大概跟了一下,发现是bgdb.m中-(void)bg_saveOrUpdateWithTableName:(NSString* _Nonnull)tablename class:(__unsafe_unretained _Nonnull Class)cla DictArray:(NSArray<NSDictionary*>* _Nonnull)dictArray complete:(bg_complete_B)complete,对于isSave的判断走了([tempDict.allKeys containsObject:bg_id])这个分支,所以最终本来应该是要做的存储操作变成了更新操作,最后wrongTable中始终没有数据。是我没有正确的使用吗?***另外,有没有提供按条件查询属性值的方法,我找了一下,没有找到,比如,我只是单纯地想要查询某一道题题目id为0002的题目对应的答题结果这个属性是答对还是答错,得到一个id类型的值,这时就没有必要查出一条完整的数据。望帮忙指正,谢谢!
1、+(NSArray* _Nullable)bg_find:(NSString* _Nullable)tablename where:(NSString* _Nullable)where;
2、+(NSArray*)tansformDataFromSqlDataWithTableName:(NSString*)tableName class:(__unsafe_unretained _Nonnull Class)cla array:(NSArray*)array;
方法1中调用了方法2,但是方法2中的class取的是[self class];
有的时候我会再封装一层manager来管理逻辑方法调用;
这是就造成了方法2返回来的数组中存放的是封装层的类型,而不是模型类型;
如果方法1中同时暴露tablename与class会更灵活,谢谢!
的撒的撒打算
模型带一个数组,数组中装的是UIImage,存储报错。然后修改成demo中的UIImage经过UIImageJPEGRepresentation处理后,存储可以了,但是取出后,无法显示,打印是NSConcreteData
clang: warning: libstdc++ is deprecated; move to libc++ [-Wdeprecated]
clang: warning: libstdc++ is deprecated; move to libc++ [-Wdeprecated]
Undefined symbols for architecture arm64:
"bg_setDebug(bool)", referenced from:
-[TestViewController viewDidLoad] in TestViewController.o
"bg_setDisableCloseDB(bool)", referenced from:
-[TestViewController viewDidLoad] in TestViewController.o
"bg_setSqliteName(NSString*)", referenced from:
-[TestViewController viewDidLoad] in TestViewController.o
ld: symbol(s) not found for architecture arm64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
r't
有这样一种情况:
我存储的ECMessage模型里面有一个ECMessageBody,这个ECMessageBody是作为基类存在的,也就是说真实的情况会是继承自ECMessageBody的ECTextMessageBody,ECVideoMessageBody等等,在存储的时候,存成了ECMessageBody造成了数据的丢失和无法还原.
这个问题该怎么解决呢?
如题,数据库中都带有下划线,model中的属性都是驼峰格式,可否有model的属性和数据库的字段对应修改;572359447,群无法申请加入,我的QQ:465310135,希望可以加群;
比如:我现在已经存了十条数据了,那么现在我想存一条数据到第二条数据库后面,那么现在存进去的就是第三条了,之前的第三条就变成第四条了,可以实现吗
if(encode){
return [self jsonStringWithArray:@[value]];
}else{
return [self arrayFromJsonString:value].firstObject; //这里[self arrayFromJsonString:value]返回的不一定是NSArray类型
}
最新版本,BGTool里的这个方法的最后自定义类型的处理貌似不对吧,更新完库以后会导致崩溃
select * from UCState where BG_isLoggedIn = 1
[logging] file is encrypted or is not a database
DB Error: 26 "file is encrypted or is not a database"
DB Query: select * from UCState where BG_isLoggedIn = 1
有这样的需求,有一个TestModel,带有10个属性,其中,有一个属性是可变数组,初始化时,可变数组是空数组或者有一个自定义的SubTestModel或者UIImage,但是当用户操作以后,可变数组中需要增加或者删除数个SubTestModel或者UIImage,用bg_update:bg_tablename where:where方法,会数据库报错:near "XXX": syntax error,看了作者的所有方法,没有找到明确的提示,还请作者有时间帮忙看看,因为这种可变数组更新对于那种可选择图片然后离线保存,下一次在提交后台前又可以操作之前离线保存的数据的应用还是很常见的操作。另外,作者辛苦了,佩服作者的开源精神和奉献精神。给你加星了,汗颜我这个拿来主义狗第一次给开源作者加星。
在体验Demo的时候,点击开始转换程序直接崩溃,是正常现象吗?下面是打印的崩溃日志:
2018-03-12 21:38:09.977557+0800 BGFMDB[73614:3660519] 调试输出: insert into My(BG_sex,BG_foods,BG_dog,BG_intro,BG_bg_updateTime,BG_bg_createTime,BG_body,BG_name,BG_dogs,BG_bodys) values(?,?,?,?,?,?,?,?,?,?);
2018-03-12 21:38:09.981172+0800 BGFMDB[73614:3660519] 调试输出: select * from My
2018-03-12 21:38:09.983643+0800 BGFMDB[73614:3660519] -[__NSDictionaryM containsString:]: unrecognized selector sent to instance 0x600000234140
2018-03-12 21:38:09.990227+0800 BGFMDB[73614:3660519] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSDictionaryM containsString:]: unrecognized selector sent to instance 0x600000234140'
關於直接调用sqliteb的原生函数计算數值類型建議使用浮點數
复制过去,pod老是出警告。。。
您好,是否支持数组内的字典又包含数组的形式?
我想问一下关联数据库怎么查询呢?有demo么?两个表数据相关联,怎么查询呢?谢谢
pod 'BGFMDB', '~> 2.0.2' 在哪呢?
s.name = "BGFMDB"
s.version = "2.0.1"
s.summary = "完美支持iOS大部分类型数据的存储,同时带有 字典转模型 功能模块."
你的这个BGFMDB像你说的很好用,但是网上一搜索,发现使用你的框架写的demo却一个都没有,即时一个懂FMDB的人,想用您的框架。还要重新学习,比较花费时间。我就是提个建议!望采纳!!!!
你好,我的数据库有@“stockId” @"prefix",@"code" 以及其他等字段,开始保存或者更新数据库的时候,根据是否有stockId来判断是否更新或保存,然后进入服务器数据刷新的时候,因为服务器没有返回stockId,只有@"prefix",@"code"和其它数据,所以我就只需要再根据@"prefix",@"code"来进行数据库保存,单个获取保存可以,但是速度慢,我想批量保存数据
比如 //实现该函数,返回指定的 “唯一约束” stockId.
+(NSArray *)bg_uniqueKeys{
return @[@"stockId"];
}
联合主键
+(NSArray *)bg_unionPrimaryKeys{
return @[@"prefix",@"code"];
}
在有联合主键和唯一约束的时候,更新数据里面有唯一约束的时候,更新所有其他数据,没有唯一约束 而更新的时候,希望通过联合主键,忽略唯一约束进行更新 ,怎么批量更新呢?
然后批量根据bg_unionPrimaryKeys更新的时候,出现错误
FMDatabase.m :1177 Unknown error finalizing or resetting statement (19: UNIQUE constraint failed: StockInfoModel.BG_stockId)
报错,请问怎么处理?具体怎么用呢?谢谢
问一下,如果再uitableview里面放很多股票,监视股票数据变化,该如何改写呢?定时刷新需要和服务器交互,然后插入数据库再按价格或者其他照规排列,如何动态监听呢?而且频繁插入和读取会卡。怎么优化呢?谢谢
放在Documents里大部分情况下不会出问题,但如果开发者需要开启app的共享文件夹功能,那么苹果要求Documents里的文件只能是“用户自主下载、导入、创建”的文件,有其他非用户主动产生的文件会被拒审。
以前就遇到过这种情况,百度地图就是把缓存文件方Documents里,导致app新版本开启共享文件夹功能后被拒审,最后得换高德地图,高德地图的缓存文件是放Library里的。
是否可搭配SQLCipher使用
在xCode9环境下 存储或批量存储对象会导致死锁
对象的属性设置为 id 类型时执行查询操作会崩溃
[OTWaitOrderModel bg_deleteFormatSqlConditions:@"where %@ like %@",bg_sqlKey(bg_createTimeKey),@"2017-09-27 19:57:38"];
是否提供个分页查询接口,比如 page = 1, count = 10
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT,0), ^{
NSLog(@"存储...");
bg_inTransaction(^BOOL{
return [p bg_save];
});
});
这样会出现
The FMDatabase <FMDatabase: 0x6000000a3c60> is currently in use.
目前 我有100条model数据 for循环插入要2秒左右的时间 这个太久了 有什么一下子插入100条的数据吗
for (YLHomeCardModel *model in reversedArray) {
model.updateTime = [Utility currentTimeInterval];
[model bg_saveOrUpdate];
NSLog(@"update name %@ date %@",model.title,model.updateTime);
}
存入数据库一条数据之后,怎么样才能获取主键的值呢
比如我要存很多种字典,都要放进这个基础的字典里更新,和数组一样独立设置应该更方便,或者有其他高明的使用方法,新手请指教
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.