2015-09-24 5 views
6

WatchKitエクステンションに約5つの変数を保存する必要があります。このアプリはiPhoneに情報を渡すことなく完全にネイティブになる予定です。時計が再起動された場合、データを保持する必要があります。アプリは現在、再起動時にデフォルトの変数状態にリセットされます。私は何を使うべきか分からない。キー値データのペア(ユーザー名/パスワード)を保存するためにウォッチキーチェーンを使用する方法についてオンラインで情報を見つけましたが、ここで使用する必要はありません。いくつかの助けを感謝します。Watch OS 2 - 完全ネイティブアプリを見るにはどのようにデータを保存しますか?

答えて

5

watchOS 2は、CoreData、NSCoding、NSUserDefaultsにアクセスできます。保存したいデータに依存しますが、それらは最善の(ファーストパーティー)オプションです。

NSUserDefaultsを使用する場合は、standardUserDefaultsを使用しないでください。initWithSuiteName:を使用し、アプリケーショングループの名前を渡す必要があります。

これを簡単にするために、NSUserDefaultsでカテゴリ/拡張子を作成することもできます。

のObjective-C

@interface NSUserDefaults (AppGroup) 
+ (instancetype)appGroupDefaults; 
@end 

@implementation NSUserDefaults (AppGroup) 

+ (instancetype)appGroupDefaults { 
    static NSUserDefaults *appGroupDefaults = nil; 
    static dispatch_once_t onceToken; 
    dispatch_once(&onceToken, ^{ 
     appGroupDefaults = [[NSUserDefaults alloc] initWithSuiteName:@"com.whatever.yourappgroupname"]; 
    }); 
    return appGroupDefaults; 
} 

@end 

スウィフト

private var _appGroupDefaults = NSUserDefaults(suiteName: "com.whatever.yourappgroupname")! 

extension NSUserDefaults { 
    public func appGroupDefaults() -> NSUserDefaults { 
     return _appGroupDefaults 
    } 
} 
+0

私はNSUserDefaultsで運を持っていませんでした。それは無限の紡ぎ車で起こった。私はApp Groupを実装しました。これは問題だったかもしれません。私は単純なint変数を格納しようとしています...私は言ったように、それらのうちの約5つは、iPhoneからデータを取得する必要なく、完全にネイティブであることをアプリにしたいと思います。 – mackymoo

+1

'initWithSuiteName:'を使い、あなたのアプリケーショングループの名前を渡すべきです。私は私の答えを更新します。 – Lance

+0

ありがとうございます。私は今夜​​これを試してみる。 :) – mackymoo

関連する問題