2014-02-16 41 views
0

我目前正在試圖查看一個字符串的前兩個字符,並根據它們是什麼,我想要做一些事情。有6種可能性:AA,BB,CC,AB,BC,CA.iOS:使用開關盒檢查字符串前綴?

我嘗試以下,但一直得到以下錯誤:

enter image description here

NSString *housing = [myArray firstObject]; 
    switch([housing compare:housing options:@"AA", @"BB", @"CC", @"AB", @"BC", @"CA" range:2]) { 

     case 0: 
      break; 

     case 1: 
      break; 

     case 2: 
      break; 

     case 3: 
      break; 

     case 4: 
      break; 

     case 5: 
      break; 

     default: 
      break; 
    } 
+1

這是什麼警告呢? –

+0

但是一般來說,我認爲你使用的是比較方法錯誤...在回答之前要仔細檢查... –

+0

已更新我的答案以包含錯誤。它要求在範圍內預期「:」。我同意,我很確定這是完全錯誤的。我想我在問什麼是最好的方式去做這件事。謝謝你的幫助! – KingPolygon

回答

4

(1)NSString之前comparecompare後,立即NSString是您比較彼此之間的串,所以比較「住房」和「住房」是沒有意義的。

(2)您錯用了optionsoptions只接受以下內容搜索選項 - NSCaseInsensitiveSearch,NSLiteralSearch,NSNumericSearch。

(3)範圍需要是一個NSRange,而不僅僅是一個數字。

Here's the class reference.

編輯:只要想到了一個漂亮優雅的解決方案,如果我不這樣說我自己......(這是凌晨3點這裏雖然,所以你應該仔細檢查邏輯,以確保我不是神志不清)

// Check to see if the first 2 characters of the housing string are in an array of the characters 
switch([[@"AA", @"BB", @"CC", @"AB", @"BC", @"CA"] indexOfObject:[housing substringWithRange:NSMakeRange(0, 2)]){ 

    case 0: // Do something if first 2 characters are AA 
    break; 

    case 1: // Do something if first 2 characters are BB 
    break; 

    // etc ... 

    default: // Do something if not found 
    break; 
}