2011-06-22 94 views
1

非常基本的問題:)如何初始化數組在objective-c

我必須在objective-c中初始化一個數組。我將在表格視圖中進一步使用該數組值。我有一個章節的列表,我已經寫下如下面的硬編碼。

NSArray *tableList; 

tableList = [[NSArray alloc]initWithObjects:@"Chapter 1",@"Chapter 2",@"Chapter 3",@"Chapter 4",@"Chapter 5",nil]; 

但現在我有一個索引數組,它保留了章節的細節。下面是持有價值的數組的代碼。

extern NSArray *wallvalue; 

    for (NSDictionary *chapter in wallvalue) { 
     NSString *chapterName = [person objectForKey:@"chapters"]; 
     if([chapterName length] >0) 
     { 

      NSLog(chapterName); 
     } 
    } 

現在我想在我的tablelist中顯示這些chapterName。我將如何做到這一點?

在此先感謝。

回答

3
NSMutableArray *tableList = [[NSMutableArray alloc] initWithCapacity:[wallvalue count]]; 
for (NSDictionary *chapter in wallvalue) { 
    NSString *chapterName = [person objectForKey:@"chapters"]; 
    if([chapterName length] >0) 
    { 
     [tableList addObject:chapterName]; 
    } 
} 
+0

@Joe,謝謝你的回覆。但我在桌子上看到空白。我認爲字符串不附帶tablelist。請檢查一次。 –

+0

如果您之前能夠記錄章節名稱,則不應該爲空。有些東西在某處,也檢查Deepak的編輯是否使用謂詞進行過濾。 – Joe

+0

@Joe。是的,你的權利是空的。現在我得到一個例外。我認爲這是由於NULL語句而發生的。 –

0

你不應該只是做,

cell.textLabel.text = [[wallvalue objectAtIndex:indexPath.row] objectForKey:@"chapters"]; 

編輯如果你有興趣只有其中有一個名字的章節,然後篩選沒有一個合適的名字中的所有對象然後做上面的事情,

NSArray * filteredChapters = [wallvalue filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"chapters LIKE '?*'"]]; 

[..] 

cell.textLabel.text = [[filteredChapters objectAtIndex:indexPath.row] objectForKey:@"chapters"]; 
+0

Ajay正在檢查章節的長度,因此在使用UITableView的情況下,需要使用另一個數組來傳遞正確的行數。 – Joe

+0

是的,我更新了它,以便我們可以過濾所有那些有章節名稱的字典。 –

+0

在那裏,我們必須愛謂語。 – Joe