2017-05-10 1 views
0

Je développe entièrement une application tvOS avec Swift. J'ai essayé d'imprimer UUID sous willFinishLaunchingWithOptions.Pourquoi UUID est-il nul dans le simulateur?

Toutefois, un message d'erreur indique fatal error: unexpectedly found nil while unwrapping an Optional value.

L'application était réellement fonctionnelle et fonctionnait bien avant. Ce bug est arrivé après que j'ai réinitialiser le simulateur.

Voici comment j'obtiens UUID.

let UUIDValue = UIDevice.current.identifierForVendor!.uuidString 
let newuuid = UserDefaults.standard.object(forKey: "uuid") as? String 
print ("This device uuid is " + newuuid!) // error message happens here 

Je crois que chaque appareil doit contenir un UUID, mais comment il est arrivé?

Répondre

2

Vous essayez d'obtenir newuuid de UserDefaults:

let newuuid = UserDefaults.standard.object(forKey: "uuid") as? String 

mais vous avez zéro entrées dans UserDefaults après la réinitialisation du simulateur et n'a pas défini une valeur pour la clé « uuid » encore.

Cela ne fait pas beaucoup de sens, mais résout le problème:

let UUIDValue = UIDevice.current.identifierForVendor!.uuidString 
UserDefaults.standard.setValue(UUIDValue, forKey: "uuid") // add entry in UserDefaults 
let newuuid = UserDefaults.standard.object(forKey: "uuid") as? String 
print ("This device uuid is " + newuuid!) 
+0

Merci pour votre réponse. C'est exactement ce que je veux. – Wei

1

Les UUID sont générés uniquement pour les périphériques réels et non pour les simulateurs iOS, car les périphériques matériels sont enregistrés sur le réseau Apple pour accéder aux jetons de périphérique.

+0

Mais avant que je réinitialiser le simulateur, il a fait revenir un UUID pour moi, comme 'EAB07A5E-F5AE-4677-A815-3C638HK42'. – Wei

+0

Vous obtenez un 'identifierForVendor'. sur simulateur – shallowThought

0

UDID et Device Token for Push sont simulés que l'on peut envoyer en poussant vers le simulateur. ils ne sont que pour la perspective du développement. UDID conserve en changeant de simulateur. Même chose pour les messages, les liens d'applications, mails que leur modèle peut voir sur bur simulateur n'a pas pu tester it.UDID va changer chaque fois que l'application est réinstallée