CoreData Migration新属性Swift

时间:2015-11-05 22:17:06

标签: database swift core-data core-data-migration

我在Swift中有一个CoreData数据库。我添加了一个新版本,其中我添加了3个属性。问题是,如果用户已经向数据库添加了一些值,在我将新属性添加到数据库之前,则应用程序将崩溃。这是因为我想用它的所有值读出整个数据库。但是,如果用户在添加新版本之前添加了一些值,那么新添加的属性中将没有值所以我读出了没有值的属性。我可以更改它,因为所有旧属性都会自动变成空字符串,所以它不会崩溃吗?或者我可以抓住错误或什么?

1 个答案:

答案 0 :(得分:1)

一种方法是编写一个读取函数,该函数抛出并在错误处理中调用另一个用于旧输入的函数。如果您发布代码,PS会更容易帮助您

//error type
enum Error: ErrorType{
    case OldInput
}
func fetchFromDatabase() throws {
   //do you fetching 
   if //condition if the new attribute exists {
        //fetch
        return
   }
   throw Error.OldInput
}

//calling it
do {
   try fetchFromDatabase()
} catch (error) {
   fetchFromDatabaseOld()
}