我们计划在我们的iOS应用中使用DBAccess。我们无法找到一种在应用运行时放弃桌面的方法。
我们的实际用例是弄清楚DB何时更新,然后删除或更改某些表。 DBAccess似乎也没有给db版本号。
答案 0 :(得分:1)
这个问题有点令人费解,但这里有:
我们如何使用DBAccess实际删除表?
答案非常简短,你不能直接。为了进一步解释这一点,我们过去删除了所有不是从DBObject
类派生的表。这引起了我们发现的用户之间的愤怒和仇恨,他们正在使用DBAccess
,但是对于现有数据库或预先填充的文件,一些表没有用作类,而是用于子查询等。所以我们删除了这个功能,似乎至少有50/50的意见分歧。
如果您愿意,可以发出SQL命令直接删除未使用的表,只需添加此类别并填充您的引导,只需为数据库名称传递nil。
@interface DBAccess (execSQL)
+(void)executeSQL:(NSString*)sql inDatabase:(NSString*)dbName;
@end
然而,点1和2都是由下一个“特征”处理的。我们在DBAccess
中内置了一个修订系统,以实现迁移和升级。它一直是隐藏的,因为它使用起来相当费力,我们正在计划一个更好的基于GUI的编辑器,以供将来使用。但是可以添加到对象的两个方法调用如下:
+ (void)setRevision:(int)revision
+ (void)entityAtRevision:(int)revision
您的实体将使用对象的当前版本在entityAtRevision:
上调用,然后您可以使用executeSQL:
方法更改现有数据。重要的是,在添加新的/重命名的列但在删除原始列之前调用此方法,以便现有数据准备就绪。但是,在退出该方法之前,您必须使用新版本号调用setRevision:
。
正如我所说,这还没有发布,因为我们想要开发一个更优秀的实现(即使基础模型保持不变),因为这是该框架的一个明显的弱点。
希望这有帮助, 阿德里安