2015-09-03 12 views
6

Ich habe das schon einmal gemacht, aber nichts scheint zu funktionieren. Hier ist mein Code:NSUserDefaults (SuiteName :) auf iOS 9 und WatchOS 2 - funktioniert nicht?

Speichern im iOS App

let groupDefaults = NSUserDefaults(suiteName: "group.company.appSharedDefaults") 
groupDefaults?.setObject(theArray, forKey: "theKey") 
groupDefaults?.synchronize() 

Lesung (funktioniert auf iOS aber nicht WatchOS 2)

let groupDefaults = NSUserDefaults(suiteName: "group.company.appSharedDefaults") 

if groupDefaults!.objectForKey("theKey") != nil { 
    textEmojiArray = NSMutableArray(array: groupDefaults!.objectForKey("theKey") as! NSArray) 
} else {   
    //error 
} 

Beide .entitlements Dateien enthalten group.company .appSharedDefaults

A Die Gruppenfunktionen wurden aktiviert und die entsprechende Gruppe wurde für beide Ziele überprüft.

Gerade jetzt, wenn ich den gelesenen Code auf der Uhr ausführen objectForKey gibt Nil zurück, aber es funktioniert auf iOS (Geräte und Simulator Ergebnisse sind die gleichen).

Was vermisse ich !?

Antwort

11

In watchOS 2 müssen Sie im Auge behalten, dass es zwei verschiedene Prozesse ausgeführt wird:

  1. Apple Watch Prozess
  2. iPhone Prozess

Beide Prozesse ihre eigenen Sandbox haben, ist warum sie es "nativ" nennen, wenn Sie also versuchen, die geteilten NSUserDefaults zu verwenden, wird es nicht funktionieren, weil die Apple Watch App eine völlig andere Sandbox als die Host iPhone App hat.

Wenn Sie etwas von Ihrem Handy auf den NSUserDefaults auf dem Apple beobachten Ziel speichern:

Verwenden WatchConnectivity die Daten, die Sie auf die Uhr speichern möchten zu senden. Wenn die Uhr die Daten empfängt, die Sie an die Uhr gesendet haben, speichern Sie sie in den Apple NSUserDefaults.

+0

Yup, danke! Natürlich finde ich den Grund, nachdem ich diese Frage gepostet habe. Ich dachte, dass viele Leute die gleichen Fragen haben könnten, also habe ich es aufgegeben. Danke für die Antwort – JustAnotherCoder

+0

Gilt das auch für Komplikationen? –

+0

@BrunoPhilipe Gut, wenn Sie eine watchOS 2 App benötigen, um eine Komplikation zu erstellen, ja –

Verwandte Themen