gpt4 book ai didi

ios - 如何使用 DBAccess iOS ORM 删除表

转载 作者:行者123 更新时间:2023-11-29 12:13:20 36 4
gpt4 key购买 nike

我们计划在我们的 iOS 应用程序中使用 DBAccess。我们无法找到在应用程序运行时删除表格的方法。

我们的实际用例是找出数据库何时更新,然后删除或更改一些表。 DBAccess 似乎也没有将版本号提供给数据库。

最佳答案

这个问题回答起来有点费解,但这里是:

我们如何使用 DBAccess 删除表?

非常简短的回答是,你不能直接。为了进一步解释这一点,我们过去常常删除所有不是从 DBObject 类派生的表。这在我们发现的用户中引起了愤怒和仇恨,他们正在使用 DBAccess 但对于现有数据库或预填充文件,一些表未用作类,而是用于子查询等.所以我们删除了该功能,似乎至少有 50/50 的意见分歧。

如果您愿意,您可以发出 SQL 命令直接删除未使用的表,只需添加此类别并填充您的 Boot ,只需为数据库名称传递 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:

正如我所说,这还没有发布,因为我们想要开发一个更好的实现(即使底层模型保持不变),因为这是框架的一个非常明显的弱点。

希望对您有所帮助,阿德里安

关于ios - 如何使用 DBAccess iOS ORM 删除表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32691574/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com