Je crée une classe de barres de navigation personnalisée et je personnalise ses attributs de titre en utilisant le code suivant: Toutefois, lorsque j'exécute le code, il renvoie le message d'erreur suivant: p> J'utilise xcode 4.6 et exécuté sur un périphérique à l'aide de iOS 6. p> p>
3 Réponses :
Les paramètres des littéraux (valeurs et clés de votre dictionnaire) ne doivent pas être Si vous préférez un constructeur moins strict, vous pouvez envisager d'utiliser nil code>. p>
+ [NSDictionary DictionaryWithObjectSandkeys:] code> à la place. P>
Ce n'est pas moins strict, il pense simplement que les arguments ont arrêté si un nil code> est trouvé lorsqu'une touche était attendue. Navigiez notamment si vous passez un objet nil code>, vous obtiendrez exactement la même exception.
@Kevinballard non-sens. Qu'est-ce qui est retourné de [NSDictionary DictionaryWithObjectSandkeys: @ "A", @ "A", NIL, @ "B", NIL]; CODE>? Il cesse de lire au premier argument de l'objet Nil.
Désolé, je voulais dire un objet quand j'ai dit la clé (méthode Darn retournée). Il ne peut pas distinguer un objet nil code> et la sentinelle nil code>. Essayez d'utiliser nil code> pour une touche et voyez ce que je veux dire: [NSDictionary DictionaryWithObjectSandkeys: @ "ANOBJ", @ "ANEKE", @ "autreobj", nil, nil] code>.
@Kevinballard Oui, je sais ce qui se passe si une clé est manquante lorsque + [Nsdictionary DictionaryWithObjectSandkeys:] code> est utilisé. Cela ne s'applique pas à ce contexte car si le cadre Constant Keys uitéxtattributefont code> ou uitéxtattributeetextextextextextext code> était nil code> ... beaucoup de programmes vont casser. Alors oui, les gens utilisent + [Nsdictionary DictionaryWithObjectSandkeys:] Code> To Court Circuit Dictionnaire Paramètres de construction où les littéraux ne peuvent pas en présence d'entrées facultatives. Les littéraux OTOH, interdisent que tout est entièrement - toutes les clés et valeurs doivent être des objets valides.
La plupart des gens ont tendance à penser que le comportement nil code> -Object-raccourci est réellement mauvais car il peut tronquer silencieusement votre dictionnaire.
@Kevinballard, je ne suis pas sûr de "la plupart des gens" dans ce cas - jamais interrogé. Vous pouvez déduire une hésitation / prudence de mon choix de mots dans la réponse. Je connais beaucoup d'Objc devs vraiment comme nil code> comme une valeur magique ou facultative dans les API système et dans leurs programmes - je pense que cela fait mal plus que de l'aide. C'est-à-dire que je privilégie beaucoup les sémantiques plus strictes - mais j'ai rencontré beaucoup de devs objc qui le préfèrent lax.
Je suis passé à DictionaryWithObjectSandkeys: code>, fonctionne mieux que @ {} code> pour le moment.
J'ai exactement le même problème et réparer avec DictionaryWithObjectSandkeys: merci.
Ce n'est pas une bonne suggestion, des bugs plus subtils peuvent résulter de l'utilisation de cette méthode, comme des données manquantes si, par exemple, vous rempliriez une réponse à un serveur et envoie tel quel. La meilleure action consiste à vérifier les données avant d'insérer dans une dict.
On dirait que votre En fait, êtes-vous sûr que c'est la bonne ligne de code? Vos références d'erreur bariol code> est nil code>. Vous ne pouvez pas stocker nil code> dans un dictionnaire. P>
Nsplaceholderarray CODE>, qui suggère que c'est un problème avec un @ [] code> littéral, pas un @ {} code> littéral. P>
@Justin: DictionnaireWithObjects: Forçays: Nombre: code> n'utilise pas nsarray code> s. Il utilise des tableaux C.
WHOOPS - NONSENSE est retourné :) Il est toujours possible que Nsarrays soient créés dans le processus de construction du dictionnaire (ou appelant un autre constructeur), donc le message de l'exception.
@Justin: un NSDictionary code> littéral ne construise pas intermédiaire nsarray code> s. Donc, à moins que -SetTlettextatTtributes: code> fait quelque chose de funky, ce n'est pas le cas.
Cette erreur semble être ailleurs. Il pointe d'une erreur de tableau à l'objet '1'. Dans votre cas, vous avez un dictionnaire et un objet '1' est uitextattributeetextcolor: [Uicolor Whitecolor] code> qui ne sera jamais nul. P>
Oui, pour ceux qui viennent de visiter le [
@ROBM BOOM! Joli.