2015-09-03 18 views
6

L'ho già fatto, ma non sembra che funzioni. Ecco il mio codice:NSUserDefaults (suiteName :) su iOS 9 e WatchOS 2 - non funziona?

Salvataggio in iOS App

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

Reading (funziona su iOS, ma non watchos 2)

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

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

Entrambi i file contengono .entitlements group.company .appSharedDefaults

A pp La capacità dei gruppi è stata attivata e il gruppo appropriato è stato spuntato su entrambi gli obiettivi.

In questo momento quando eseguo il codice di lettura sull'oggetto watchForKey restituisce nil ma funziona su iOS (i risultati del dispositivo e del simulatore sono uguali).

Cosa mi manca !?

risposta

11

In watchos 2 è necessario tenere a mente che v'è 2 diversi processi in esecuzione:

  1. Apple Osservare processo
  2. iPhone processo

Entrambi questi processi hanno una propria sandbox che è perché lo chiamano "nativo", quindi se si tenta di utilizzare NSUserDefaults condiviso non funzionerà perché l'app di Apple Watch ha una sandbox completamente diversa rispetto all'app per iPhone host.

Se si vuole salvare qualcosa dal telefono ai NSUserDefaults sulla Apple Osservare Obiettivo:

Usa WatchConnectivity per inviare i dati che si desidera salvare l'orologio. Quindi, quando l'orologio riceve i dati che gli hai inviato, salvalo nei NSUserDefaults predefiniti dell'orologio Apple.

+0

Sì, grazie! Ovviamente trovo il motivo subito dopo aver postato questa domanda. Ho pensato che un sacco di persone potrebbero avere le stesse domande, quindi ho lasciato perdere. Grazie per la risposta – JustAnotherCoder

+0

È valido anche per le complicazioni? –

+0

@BrunoPhilipe Considerando che hai bisogno di un'applicazione watchOS 2 per creare una complicazione, si –

Problemi correlati