2017-03-10 9 views
0

私はアプリがそうのように最初に起動したときにCSVがコアデータにファイルをプリロードし、アプリがあります。アプリが更新されたときにプリロードされたデータを交換してください - iOSのスウィフト

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ファイルには、すべての更新に変更する予定ですし、より良い方法があります場合、私は思っていました。

答えて

0

たぶん、あなたはバージョンが既に更新されているチェックのuserDefaultsの重要lastUpdatedVersionを作成することができます。 次に、あなたのようなものをチェックすることができます

let currentVersion = Bundle.main.infoDictionary?["CFBundleShortVersionString"] 
if !NSUserDefaults.standardUserDefaults.objectForKey(key: "lastVersionUpdated") || NSUserDefaults.standardUserDefaults.objectForKey(key: "lastVersionUpdated") != currentVersion  
{ 
    //Update your CSV here 
    //... 
    NSUserDefaults.standardUserDefaults.setObjectForKey(key: "lastVersionUpdated", object: currentVersion) 
} 

をしかし、それは、これはエレガントな解決策であるかどうか、を判断するのはあなた次第まだです。彼の解決のためのJORAへ

1

感謝。興味を持っている人のために、ここで私はスウィフトでそれを実装方法は次のとおりです。

スウィフト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()関数)を含みます。

関連する問題