2012-10-18 35 views
0

你好,並感謝所有, 這裏是的情況,當我使用下面的方法填充我的數組時,它適用於當我使用Methode 2時它不起作用。目的是改變文字的顏色。兩種方法都是NSLOGED,數據是相同的。數組如何在ios中填充之間的區別?

第一種方式。(工作名稱被變灰)

-cellForRowAtIndexPath 
.... 
     if ([self.secArray containsObject:indexPath]) { 
     cell.textLabel.textColor = [UIColor grayColor]; 
    } ..... 

-didSelectRowAtIndexPath: 
... 
    [secArray addObject:indexPath]; 

第二種方式(不工作 - 填充從我的.plist陣列)

-cellForRowAtIndexPath 
.... 
     if ([self.secArray containsObject:indexPath]) { 
     cell.textLabel.textColor = [UIColor grayColor]; 
    } ..... 


-viewWillAppear 
NSString *filePathOrdersIndex = [self dataFilePathOrders]; 

    NSMutableArray *chekDist; 

    chekDist = [[NSMutableArray alloc] initWithContentsOfFile:filePathOrdersIndex]; 
    NSLog(@"data checkDist........... %@", chekDist); 
    if(!chekDist){ 
     chekDist = [[NSMutableArray alloc]init]; 
    } 

    for(id dist_data in chekDist){ 

     secArray = [dist_data objectForKey:@"myIndexPath"]; 
     //[secArray addObject:[dist_data objectForKey:@"myIndexPath"]]; 

    } 

兩種方法登錄到控制檯兩個數組包含相同的陣列數據....但第二種方式不起作用

任何幫助,非常感謝。

+0

這可能是因爲是的Plist NSDictionary的陳述...... – CodaFi

+0

@CodaFi,你能詳細闡述表示???? – AhabLives

+0

@CodaFi是的,如果'NSIndexPath'的'description'方法的實現打印類似於字典的文本,那麼NSLog消息甚至可能顯示相同。 @AhabLives:他的意思是在第二種方法中,因爲你是從plist加載的,你可能會看到存儲在「myIndexPath」鍵中的「NSDictionary」實例,而不是實際的「NSIndexPath」實例。 –

回答

0

在第二種方法中,您將checkDist陣列的元素分配給陣列本身,分別是dist_data,checkDist a secArray

從外部的角度來看,這兩種方法在功能上並不相同,不知道這些變量擁有哪些數據類型的更多信息。雖然因爲你每個for執行一次循環設置secArray變量,我假設這是不正確的,你需要使用你已經被註釋掉在你的第二個方法([secArray addObject:[dist_data objectForKey:@"myIndexPath"]];)就行了。

如果在使用該行後,它仍然不起作用,請驗證secArray已在第二個方法執行時創建(確保它不是nil)。

+0

我試過註釋掉的代碼行,它沒有給我所需的格式,它是.... secArray =(「indexPath1」,「indexPath2」,「indexPath3」,「indexPath4」)....上面的行評論確實給出了期望的格式。 – AhabLives

相關問題