2015-04-14 33 views
1

我在阅读DBAccess文档以了解它是否可以满足我的需求。IOS DBAccess迁移到新表结构

我的问题是关于移民。

例如:我有一个现有的应用程序,与DBACCESS实现的,使用一个表 “人” 具有以下字段:
- ID
- 姓名
- 姓
- 地址

会发生什么如果我将其他两个字段添加到Person类,则将其添加到数据库:
- 电子邮件
- 电话号码

DBAccess会自动将新字段添加到数据库表吗?
有没有一种方法来指定新添加字段的默认值?

回答

1

是的,如果添加这两个附加属性,DBAccess将自动添加其他列。

目前,没有能力为新列指定默认值,它们都将像预期的那样用NULL初始化。

你对默认值的建议很有趣,我很惊讶,以前没有出现过。这看起来既容易实施,又相当合理。唯一的小奇怪的事情是,如果我是在方法

+ (id)defaultValueForProperty:(NSString*)propertyName; 

添加到框架,然后叫,创建一个新的列时,将用户或许希望此创建时每行发生,不是一次一列,所以他们可以自定义这个值,也许从别处的内容计算出来。

我很乐意提供您的反馈意见,因为您认为这是一个合适的解决方案。

我个人倾向于一个类和一个实例方法,如果开发人员实现一个实例方法,那么每个单独的行将被解析并重写,这可能会很慢,但也是一个非常有用的功能。

无论哪种方式,添加这样一个简单的功能不应超过一个小时左右。我们只需要看看我们是否可以看到任何陷阱。

谢谢

+0

嗯,我认为一个类方法将非常有用,尤其是当添加新的(o创建)不能为空的字段。 – Patrik

+0

正如你所说,一个实例方法对于大型表格可能会很慢。也许最好提供一种方法来运行一些sql查询作为现有数据的修复,这可以更快。或者可以实现每次修改表时调用的类函数。 – Patrik

+1

我接受它,所以我明白你的理由是让查询自己动手。如“WHERE surname ==''OR surname IS NULL”。因为所有的对象都有它们的默认属性值。例如,如果要添加列时间,尽管SQLite中的列值将为NULL,但该类中的值将为0.如果持久保留了该对象,则会将其保存为0而不是NULL。我会做出改变,因为它们很简单,但我想知道是否有另一种情景我应该考虑,我还没有考虑过。 –