Проблема в словаре iPhone? - PullRequest
       1

Проблема в словаре iPhone?

0 голосов
/ 07 сентября 2011

Я вращаюсь вокруг маленькой проблемы в 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";
        }
    );

Также у меня есть массив подходящих продуктов

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

Теперь все, что я хочу сделать, - это удалить словарь товаров по сравнению с соответствующим массивом товаров. как мне это сделать. Примечание. Я не могу использовать ключ для удаления объектов в соответствии с моими бизнес-правилами. У меня есть проблема, поскольку у меня повторяются имена, но я должен получить словарь окончательного результата, как показано ниже. Является ли это возможным.

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

Пожалуйста, ответьте мне, если мой вопрос не ясен.

Я исправил подобную проблему в Java, используя приведенный ниже код

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;
     }
 }
 }

1 Ответ

1 голос
/ 07 сентября 2011
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];     

}

// Результат теперь имеет то, что вы хотели.Используйте это.

...