2016-09-16 58 views
-2

我是iOS新手。而且我現在面臨一個問題,一個代碼如何比較目標C中從NSArray轉換NString?

array=[[NSMutableArray alloc] init]; 
     array =[responsedict valueForKey:@"Type"]; 
     NSLog(@"Type Array =%@",array); 
for (int i =0; i<[array count]; i++) { 
    if (array.count>0) 
    { 
     typeString = [NSMutableString stringWithFormat:@"%@", [array objectAtIndex:i]]; 
     NSLog(@"Type String =%@",typeString); 
    } 
} 

我得到的字符串值作爲

Type String =1 
Type String =2 

現在我需要康普艾字符串中的cellForRowAtIndexPath

if ([typeString isEqual:@"1"]) { 
      cell.IBTiconlbl.textColor = [UIColor blueColor]; 
     } 
if ([typeString isEqual:@"2"]) { 
      cell.IBTiconlbl.textColor = [UIColor redColor]; 
     } 

但其轉換僅在readColor中的文本顏色不是藍色。字符串包含值1和2.我需要在字符串值爲1時將文本顏色轉換爲藍色,當字符串值爲2時需要將文本顏色轉換爲紅色。但它只執行一項操作。

+5

使用這樣的'如果([typeString isEqualToString:@ 「1」])'比較字符串 –

回答

0

無需整個數組轉換爲NSString這將保存代碼優化時,有些則可以通過使用indexPath.row檢查對象做到這一點,並採取相應的行動見下文代碼:

if([[NSString stringWithFormat:@"%@",[array objectAtIndex:indexPath.row]] isEqualToString:@"1"]){ 
     cell.IBTiconlbl.textColor = [UIColor blueColor]; 
}else if([[NSString stringWithFormat:@"%@",[array objectAtIndex:indexPath.row]] isEqualToString:@"2"]){ 
     cell.IBTiconlbl.textColor = [UIColor redColor]; 
}else{ 
     // code for else part here 
} 
+0

您的代碼顯示的錯誤[__NSCFNumber isEqualToString:]:無法識別的選擇發送到實例0xb000000000000013 – Muju

+1

沒事看我的更新,現在..以前的數組返回的數字,這是你收到錯誤.. – vaibhav

+0

你的代碼是完美的。感謝您幫助您節省我的一天。 – Muju

1

嘗試......

if ([typeString isEqualToString:@"1"]) { 
    cell.IBTiconlbl.textColor = [UIColor blueColor]; 
} else if ([typeString isEqualToString:@"2"]) { 
    cell.IBTiconlbl.textColor = [UIColor redColor]; 
} else { 
    cell.IBTiconlbl.textColor = [UIColor clearColor]; 
} 
0

我認爲你需要得到一本關於iOS編程的書並研究它。

  • 問題1:

    在第一行中創建一個NSMutableArray並將其分配給陣列。在下一行你重寫數組。創建NSMutableArray完全沒有意義。

  • 問題2:

    您正在使用方法valueForKey。除非您已閱讀valueForKey的文檔,否則您理解它,並且您有合理的理由使用valueForKey而不是objectForKey,則應使用objectForKey或subscript語法。因此無論[responseDict objectForKey:@「Type」]或更好的responseDict [@「Type」]。

  • 問題3:

    你是不是檢查結果,以任何方式,讓您的應用程序將很快,如果你有一個對象,它是不是一個陣列崩潰。如果你將它分配給一個NSMutableArray,那麼一旦你嘗試修改它就會崩潰,因爲它不太可能是一個NSMutableArray。

  • 問題4:

    的 「如果(array.count> 0)」 顯然毫無意義的。

  • 問題5:

    您不使用正確的循環語法使你和其他人的生活很辛苦。對於(數組中的id項)要短得多,並且運行速度比您的代碼快得多。

  • 問題6:

    爲什麼地球上的typeString可變的?

  • 問題7:

    你似乎不知道什麼樣的對象存儲在數組中。這是一個數字嗎,它是一個字符串嗎?你應該真的知道這一點並相應地進行比較

  • 問題8:

    你絕對不應該在被的cellForRowAtIndexPath分析一些數據。這是可怕的。以你的responseDict爲例,定義一個可以代表你的響應數據的類,將它解析成一次到適當的數據中,包括你所有的錯誤檢查,然後cellForRowAtIndexPath可以訪問數據。

+0

當我不使用if(array.count> 0)並且數組爲零時,應用程序崩潰。所以爲了防止崩潰,我使用if(array.count> 0)。 – Muju

+0

數組只是NSMutableArray的一個對象。 – Muju