2016-08-11 5 views
1

У меня есть массив, которые состоят из следующих строк:Отдельный массив строк с помощью нескольких массивов

[NSString stringByAppendingFormat:@"<p style=\"padding-left:20px;margin-bottom:-10px;\"><i>%@%@%@%@</i></p>", 
         wrappingBy, pack1, pack2, strFirmName]; 

Например, есть 200 различных строк. Первый параметр - wrappingBy, может иметь несколько разных имен. Например: коробка, трубка, сумка и т. Д.

Я хочу, чтобы перечислить этот массив и создать различные массивы в зависимости от этого имени. Итак, если мой массив состоит из 50 строк, начинающихся с поля, из строки берутся 50 строк, а 100 строк начинаются с мешка. Я хочу 3 разных массива.

Есть ли какой-либо простой способ достичь этого?

+2

Этот простой способ будет хранить их в словаре, а затем получить индивидуальный ключ и сохранить их в массиве separte! –

+0

@TejaNandamuri Интересно, как я мог это сделать. Каждый раз, когда я получаю строку, представленную выше, является отдельным случаем, когда мы получаем эту строку, перейдя через SQL db. –

+0

Включает ли каждый массив shud имя box/bag/tube или полную строку? –

ответ

1

Попробуйте это:

Допустим, у вас есть массив строк:

NSArray *[email protected][@"box3523sfgsg",@"boxsdfsdf3",@"[email protected]$#",@"[email protected]@4bag",@"[email protected]#$FR",@"tubeASAD"]; 

В вашем случае выше массив заполняется следующей строкой

[NSString stringByAppendingFormat:@"<p style=\"padding-left:20px;margin-bottom:-10px;\"><i>%@%@%@%@</i></p>", 
         wrappingBy, pack1, pack2, strFirmName]; 

Теперь добавьте wrappingBy param в массив каждый раз, когда вы добавляете указанную выше строку в массив, и убедитесь, что вы не добавляете дубликаты в массив. Вы можете проверить дубликаты, прежде чем добавлять их в массив.

и в вашем случае, вы могли бы сделать

 NSMutableArray *arrayNAme=[[NSMutableArray alloc]init]; 

     //make arrayName mutable 
     if (![arrayNAme containsObject: wrappingBy]) { 
      [arrayNAme addObject: wrappingBy]; 
     } 

вы получите ИмяМассив содержит следующее:

 [email protected][@"box",@"bag",@"tube"]; 

Теперь поиск основной строки массива, если он содержит имена wrapingBy или нет, если да , добавьте их в массив и добавьте этот массив в dicitonary:

NSMutableDictionary *myDictionary=[[NSMutableDictionary alloc]init]; 
    for(NSString *nameString in arrayNAme) { 
     NSMutableArray *strnArray=[[NSMutableArray alloc]init]; 
     for (NSString *str in arr) 
     { 
      if([str containsString:nameString]) 
      { 
      [strnArray addObject:str]; 
      [myDictionary setValue:strnArray forKey:nameString]; 
      } 
     } 
    } 

В конце у вас есть ди cообщение:

{ 
    bag =  (
     "[email protected]$#", 
     "[email protected]@4bag" 
    ); 
    box =  (
     box3523sfgsg, 
     boxsdfsdf3 
    ); 
    tube =  (
     "[email protected]#$FR", 
     tubeASAD 
    ); 
} 

Теперь вы можете получить каждое значение ключа и сохранить его в отдельном массиве.

+0

спасибо, что сэкономит мне много времени! Хорошее решение –

+0

вы попробовали? Он состоит из dublicates .. –

+0

о, вы правы, позвольте мне изменить его! –