更新应用程序时替换预加载的数据 - iOS Swift

时间:2017-03-10 20:18:04

标签: ios core-data nsuserdefaults preload

我有一个应用程序在第一次启动应用程序时将CSV文件预加载到Core Data中:

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {

    let isPreloaded = defaults.bool(forKey: "isPreloaded")
    if !isPreloaded {
        preloadData()
        defaults.set(true, forKey: "isPreloaded")
    }
}

但是,我想在应用更新时预加载新的更新的CSV文件。我想我可以创建一个名为" isPreloaded2"的新密钥。在我的默认设置中,但CSV文件会随着每次更新而改变,我想知道是否有更好的方法。

2 个答案:

答案 0 :(得分:1)

感谢JoRa的解决方案。对于任何有兴趣的人,这是我在Swift中实现它的方式:

Swift 3.0

let defaults = UserDefaults.standard
if let version = Bundle.main.infoDictionary?["CFBundleShortVersionString"] as? String {
    let currentVersion = defaults.value(forKey: "currentVersion") as? String
    if version != currentVersion { //currentVersion will either be nil or last version number when app is launched after update.
        preloadData()
        defaults.set(version, forKey: "currentVersion") //update currentVersion in defaults so version will match currentVersion next time.
    }
}

在预加载新数据之前不要忘记删除旧数据(我的preloadData()函数包含removeData()函数)。

答案 1 :(得分:0)

也许您可以在userDefaults中创建一个密钥target_movie = "Hitman" def good(movies, target_movie): return next(movie["imdb"] > 5.5 for movie in movies if movie["name"] == target_movie) good(movies, target_movie) ,以检查哪个版本已经更新。 然后你可以检查一下:

lastUpdatedVersion

但是,您仍然需要决定这是否是一个优雅的解决方案。