33 votes

Erreur de compilation "méthode attendue non trouvée" lors de l'utilisation de l'indice sur NSArray

J'ai écrit ce code simple pour tester la nouvelle syntaxe littérale de l'Objective-C pour les fichiers NSArray s :

NSArray *array = @[@"foo"];
NSLog(@"%@", array[0]); 

La première ligne fonctionne bien, mais la mise en indice entraîne une erreur :

La méthode attendue pour lire un élément de tableau est introuvable sur un objet de type 'NSArray *'.

Je me demande juste si j'ai fait quelque chose de mal, ou si les littéraux n'ont pas encore été complètement implémentés. Je compile avec Apple LLVM 4.0 et j'utilise le SDK iOS 5.

Voici également une capture d'écran de l'erreur.

Error

0 votes

La page sur clang.llvm.org concernant les littéraux Objective-C indique que vous devez utiliser Apple LLVM 4.0 ou clang v3.1 pour utiliser les nouvelles fonctionnalités. Avez-vous installé l'une de ces versions, et est-elle spécifiée dans vos paramètres de construction ?

0 votes

Oui, j'utilise LLVM 4.0. J'aurais dû mentionner que

3 votes

Vous devez également compiler avec les SDK iOS 6 ou OS X 10.8, faute de quoi les objets Foundation ne disposent pas des méthodes nécessaires pour l'indice de la syntaxe littérale.

0voto

HannahCarney Points 3108

Ajouter #import <Foundation/Foundation.h> dans votre fichier h, et utilisez un NSMutableArray au lieu de

-1voto

Justin Domnitz Points 1890

Si quelqu'un arrive sur ce vieux fil de discussion après avoir rencontré cette erreur dans Xcode 9.3 beta 4 avec du code Objective-C hérité comme je l'ai fait, voici ma solution.

Mise à jour :

@property (nonatomic, strong) id<CustomClass> myObject;

A :

@property (nonatomic, strong) NSMutableArray<CustomClass> *myObject;

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X