2011-06-01 2 views
1

Comment résoudre le type d'avertissement suivant?Comment résoudre NSMutableArray peut ne pas répondre à ObjectForKey

  • NSMutableArray peut ne pas répondre à objectForKey.
  • UISwitch ne peut pas répondre à setAlternateColors:

Mon code pour le commutateur est:

[mySwitch setAlternateColors:YES]; 

et Array est:

NSMutableArray *tmp1 = [sortedIndexedArray objectAtIndex:indexPath.section]; 
NSMutableArray *tmpDict2 = [tmp1 objectAtIndex:indexPath.row]; 
NSString *companyNameString = [tmpDict2 objectForKey:@"firstname"]; 
NSString *flName = [tmpDict2 objectForKey:@"title"]; 
[searchCustomCell setDataForEvent1:companyNameString venue:flName]; 

Répondre

0

Le compilateur se plaint pour UISwitch parce que l'objet ne contient pas de message setAlternateColors. setAlternateColors fait en réalité partie d'une API privée, donc si vous utilisez ce message, votre application sera rejetée par Apple. Comme les autres réponses ont signalé objectForKey est un message sur NSDictionary, pas NSMutableArray.

1

objectForKey est une méthode d'instance de NSDictionary. Vous l'utilisez sur NSMutableArray.

4

NSMutableArray ne répond pas à -objectForKey:. Votre nom de variable "tmpDict2" est trompeur; un tableau n'est pas un dictionnaire.

Array stocke une liste ordonnée d'objets; Les dictionnaires stockent un mappage non ordonné de clés sur des valeurs (objets). Ainsi, -objectForKey: ne s'applique qu'à un NSDictionary.

Peut-être que vous voulez ça? Je ne peux pas vraiment être sûr basé sur ce que vous avez fourni ...

NSDictionary *tmp1 = [sortedIndexedArray objectAtIndex:indexPath.section]; 
NSDictionary *tmpDict2 = [tmp1 objectAtIndex:indexPath.row]; 

En ce qui concerne votre commutateur, peut-être vous avez fait une sous-classe personnalisée de UISwitch qui répond à -setAlternateColors:? Dans ce cas, essayez d'utiliser [(MyUISwitchSubclass *)mySwitch setAlternateColors:YES] ou faites simplement correspondre la variable mySwitch au type MyUISwitchSubclass *. D'un autre côté, s'il s'agit d'une méthode privée, évitez de l'utiliser dans votre application. Dans l'ensemble, je ne sais pas exactement ce que vous essayez de faire, à moins de fournir plus d'informations et de contexte.

+1

setAlternateColors est en fait un message API privé (pas une sous-classe personnalisée), donc il ne devrait certainement pas être utilisé cette. :) – RedBlueThing

+0

merci de me donner une réponse. – Allen

0

NSMutableArray n'a pas la méthode objectForKey. Utilisez NSMutableDictionary.

1

Essayez par ce code ...

NSMutableArray *tmp1 = [sortedIndexedArray objectAtIndex:indexPath.section]; 

NSDictionary *tmpDict2 = [tmp1 objectAtIndex:indexPath.row]; 

NSString *companyNameString = [tmpDict2 objectForKey:@"firstname"]; 

NSString *flName = [tmpDict2 objectForKey:@"title"]; 

[searchCustomCell setDataForEvent1:companyNameString venue:flName]; 

Merci ...

Questions connexes