2015-09-24 17 views
6

Ho bisogno di memorizzare circa 5 variabili sull'estensione WatchKit - Solo lato dell'orologio. L'app sarà completamente nativa, senza passare alcuna informazione su iPhone. Ho bisogno che i dati persistano se l'orologio viene riavviato. Al momento del riavvio, l'app si reimposta allo stato di variabile predefinito. Non sono sicuro di cosa usare. Ho trovato informazioni online sull'uso del portachiavi dell'orologio per la memorizzazione di coppie di dati valore-chiave (nome utente/password), ma non penso che sia quello che dovrei usare qui. Apprezzo l'aiuto.Guarda OS 2: come memorizzano i dati su Watch per l'app completamente nativa?

risposta

5

watchOS 2 ha accesso a CoreData, NSCoding e NSUserDefaults. Dipende dai dati che si desidera memorizzare, ma quelli sono le opzioni migliori (prima parte).

Se si intende utilizzare NSUserDefaults, non utilizzare standardUserDefaults, è necessario utilizzare initWithSuiteName: e passare il nome del gruppo di app.

È possibile anche creare una categoria/estensione su NSUserDefaults per semplificare l'operazione.

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 

Swift

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

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

io non stavo avendo fortuna con NSUserDefaults. Ne risultò con la ruota che gira all'infinito. Ho implementato i gruppi di app, che potrebbe essere stato il problema. Sto solo cercando di memorizzare semplici variabili int ... come ho detto, circa 5 di loro e voglio che l'app sia completamente nativa, senza bisogno di recuperare alcun dato da iPhone. – mackymoo

+1

Dovresti usare 'initWithSuiteName:' ​​e inserire il nome del tuo gruppo di app. Aggiornerò la mia risposta – Lance

+0

Grazie. Ci proverò stasera. :) – mackymoo