Dictionnaire de l'accès au réseau Swift
Considérons le code suivant qui obtient un tableau de dictionnaires à partir d'un fichier plist:
let path = NSBundle.mainBundle().pathForResource("books", ofType: "plist")
let dict = NSDictionary(contentsOfFile: path)
let books:Array = dict.objectForKey("Books") as Array<Dictionary<String, AnyObject>> //I hate how ugly and specific this is. There has got to be a better way??? Why can't I just say let books:Array = dict.objectForKey("Books")?
let rnd = Int(arc4random_uniform((UInt32(books.count))))
let bookData:Dictionary = books[rnd]
Maintenant, je vais avoir de la difficulté à accéder à différents livre dictionnaires:
let title:String = bookData.objectForKey("title") //[String: AnyObject] does not have a member named 'objectForKey'
let title:String = bookData["title"] // (String, AnyObject) is not convertible to String
Quelle est la bonne façon de trouver le titre du livre?
Avez-vous essayé
Swift version
let bookData:Dictionary<String,String> = books[rnd]
? Puis votre deuxième accesseur doit de travail. (Je ne suis pas à un ordinateur à l'essai)Swift version
OriginalL'auteur soleil | 2014-07-11
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser la nouvelle syntaxique sucres pour les Tableaux et les Dictionnaires de la Beta 3.
Vous pouvez accéder à
bookData
comme c'est automatique, l'inférence de type devrait fonctionner...Mettre un type explicite pour chaque élément dans le livre dictionnaire, depuis que nous l'avons défini comme
AnyObject
.La fin de modifier
Avec le néant, la coalescence de l'opérateur
??
vous pouvez vérifier néant valeurs et de fournir une autre valeur comme suit:(String, AnyObject) is not convertible to String
sur la lignelet title = bookData["title"]! as String
Avez-vous regardé ce qui est à l'intérieur "titre"? Sa valeur est également un objet?
Désolé, l'erreur a disparu. Beta3 est encore très buggé pour moi. Je vais marquer ce que correct. Une question cependant, pourquoi le "!" après bookData["titre"]?
Dire que l'option a certainement une valeur. Je pense qu'il est appelé obligé d'ôter ou quelque chose.
OriginalL'auteur Benzi
Swift:
Si vous utilisez
Dictionary
:OriginalL'auteur Juan Boero