2012-03-29 52 views
0

你好frnds我我有陣列的陣列的鍵如下面給出的獲取數據:-`如何從嵌套Array根據在數組實際上

parrent array{ 
    PrArr =  

  { 
       dt = "01-Apr-2012 11:15 PM\n"; 
       dur = "15\n\t\t"; 
       name = "Tez Special\n\t\t"; 
      }, 
         { 
       dt = "01-Apr-2012 11:30 PM\n\n"; 
       dur = "30\n\t\t"; 
       name = "Tez Tare\n\t\t"; 
      } 
     ); 
     sid = "530\n"; 
    }, 

     { 
     PrArr =   (

      { 
       dt = "01-Apr-2012 11:20 PM\n"; 
       dur = "20\n\t\t"; 
       name = "Shiv Yog - Acharya Ishan Shivanandji\n\t\t"; 
      }, 
         { 
       dt = "01-Apr-2012 11:40 PM\n\n\n\t"; 
       dur = "20\n\t\t"; 
       name = "Param Pujya Swami HariChaitanya Puriji Maharaj\n\t\t"; 
      }; 
      sid = "560\n"; 
    }, 

} 我想根據數組中的sid提取數據。

Thanx in advance

+0

有趣的問題,但有些不明確。哪一個是你的父數組?是'PrArr'父數組的元素(它反過來又是數組,就像ur que暗示的那樣)?你有沒有使用NSDictionay來存儲dt,dur,名稱作爲鍵。? – 2012-03-29 06:17:34

+0

PrArr不是父數組...是的,我使用nsdictionary .. – 2012-03-29 06:30:18

+0

是的,只有..我的猜測是正確的; PrArr是子陣列。好的,你用什麼邏輯來存儲數據在PrArr。我的意思是它有2個花括號和'sid'中的數據。提取此sid並根據要求進行排序,然後將其存儲在數組中。尋找NSSortDescriptor。它會幫助你。 – 2012-03-29 06:49:05

回答

0

如果您正在嘗試查找sid等於什麼的字典,那麼您將需要使用NSPredicate

從蘋果文檔:

謂詞提供可可指定查詢的一般裝置。謂詞系統能夠處理大量域,而不僅僅是例如Core Data或Spotlight。本文檔主要描述了 謂詞,它們的用法,它們的語法和它們的侷限性。

使用NSPredicate,您可以找到與您的搜索對應的所有sid。

我會給你一個例子。根據你張貼在這裏的陣列上,你想回到那個有SID等於@「530 \ N」的條目,你將需要做的是:

NSPredicate* predicate = [NSPredicate predicateWithFormat:@"sid LIKE %@",@"530\n"]; 
NSDictionary* entry = [[parentArray filteredArrayUsingPredicate:predicate] objectAtIndex:0]; 

但如果你試圖理清你的基於sid的數組,你可以使用NSSortDescriptor,這將返回你的基於sid的排序數組。

從蘋果文檔:

一個排序描述符描述用於排序 對象的集合進行比較。您創建了一個NSSortDescriptor實例,該實例指定要排序的 屬性密鑰,以及比較是否應按 升序或降序排列。排序描述符還可以指定在比較屬性鍵值時使用的 方法,而不是比較: 的默認值。

請務必記住,NSSortDescriptor不會對 對象進行排序。它提供瞭如何對對象進行排序的描述。 實際排序是由其他類,通常是NSArray或者NSMutableArray。

一個例子給你

NSSortDescriptor *sidDescriptor= [[NSSortDescriptor alloc] initWithKey:@"sid" ascending:YES]; 
NSArray* sortDescriptors = [NSArray arrayWithObject:sidDescriptor];  
NSArray* sortedArray = [parentArray sortedArrayUsingDescriptors:sortDescriptors]; 
0

我只是暫時塗寫它,檢查是否有這樣的事情可以幫助你。

NSSortDescriptor *sidDescr = [[NSSortDescriptor alloc] initWithKey:@"sid" ascending:YES]; 
sortDescriptors = [NSArray arrayByAddingObject:sidDescr];  
NSArray * sortedArr = [*yourparentarray* sortedArrayUsingDescriptors:sortDescriptors];