2011-09-07 2 views
0

Je tourne autour avec un petit problème dans iPhone tout en jouant autour de Array et Dictionary. Je dictionnaire de produit avec les données suivantesProblème dans le dictionnaire iPhone?

name = Product; 
    options =  (
       { 
      code = code1; 
      name = "product AAA"; 
     }, 
       { 
      code = code1; 
      name = "product BBB"; 
     }, 
       { 
      code = "code2"; 
      name = "product BBB"; 
     }, 
       { 
      code = "code3"; 
      name = "product CCC"; 
     }, 
       { 
      code = "code3"; 
      name = "product DDD"; 
     }, 
       { 
      code = code4; 
      name = "product EEE"; 
     }, 
       { 
      code = code4; 
      name = "product FFF"; 
     } 
    ); 

j'ai aussi une gamme de produits correspondant à

matchingProducts 
{ 
    "product BBB", 
    "product CCC", 
    "product DDD" 
) 

Maintenant, tout ce que je veux faire est que je veux supprimer des produits dictionnaire comparer à un tableau matchingProducts . Comment puis-je le faire. Remarque: Je ne peux pas utiliser la touche pour supprimer des objets conformément à mes règles métier. J'ai un problème car j'ai des noms sont répétés mais je dois obtenir le dictionnaire des résultats finaux comme indiqué ci-dessous. C'est possible.

name = Product; 
    options =  (
       { 
      code = code1; 
      name = "product AAA"; 
     }, 
       { 
      code = code1; 
      name = "product BBB"; 
     }, 
       { 
      code = code4; 
      name = "product EEE"; 
     }, 
       { 
      code = code4; 
      name = "product FFF"; 
     } 
    ); 

Veuillez me répondre si ma question n'est pas claire.

J'ai résolu le problème similaire en Java en utilisant le code ci-dessous

for (int j = 0; j < matchingProducts.size(); j++) { 
String product = ((Product) matchingProducts.elementAt(i)).name; 

for (int i = 0; i <Product.size(); i++) { 
    String productName = ((Product) Product.elementAt(i)).name; 
    if (product.equals(productName)) { 
    Product.removeElementAt(i); 
    break; 
    } 
} 
} 
+0

J'ai utilisé un tableau pour extraire la valeur du dictionnaire et essayer de l'atteindre .. mais échoué –

+0

@Devraj J'ai mis à jour la question –

+0

Si vous ne parvenez pas à utiliser la clé (ce que je suppose est le code du produit dans ce scénario), quelle serait la règle que vous utilisez pour faire correspondre et supprimer des objets similaires? par exemple. comment voulez-vous décider entre supprimer «code 1, produit BBB» et «code 2, produit BBB» – Madhu

Répondre

1
NSMutableDictionary *Product = initialize like you did with Products; 
NSMutableDictionary *resultant = [NSMutableDictionary alloc]init]; //this will have your result  
NSArray *keys = [Product allKeys]; 
for(int i = 0 ; i < [keys count]; i++) 
    { 
    id temp = [Product objectForKey:keys[i]]; 

bool matchFound = NO; 
for (int j = 0; j < [matchingProduct count]; j++) 
    { 
    id temptemp = [matchingProduct objectAtIndex:j] //Assuming matchingProduct is an NSArray or NSMutableArray 
    if(temp == temptemp) 
     { 
      matchFound = YES; 
     } 
    } 

    if(!matchFound) 
    [resultant addObject:temp];  

}

// résultante a maintenant ce que vous vouliez. Utilise le.

+0

de mon dictionnaire de produit ci-dessus, comment puis-je accéder aux noms de tous les codes avec les valeurs du dictionnaire.Il détient en interne le tableau d'options. –

+0

Pouvez-vous poster votre déclaration à la fois pour le dictionnaire du produit et le tableau matchingProduts? – SayeedHussain

+0

NSDictionary * productDict = nil; pour (NSDictionary * dict in items) { if ([[dict objetForKey: @ "nom"] isEqualToString: @ "Product"]) { productDict = dict; pause; }} \t \t NSArray * matchingProducts; pour (int i = 0; i <[countStateDictvalues ​​count]; i ++) { NSString * optionString = (NSString *) [selectedStateDictKeys objectAtIndex: i]; if ([optionString isEqualToString: @ "ExcludeProduct"]]) { matchingProducts = [[[[selectedStateDictvalues ​​objectAtIndex: i] objetForKey: @ "options"] valeurForKeyPath: @ "@ unionOfObjects.name"] retain]; }} –

Questions connexes