2016-11-08 70 views
1

編輯爲添加代碼:NSArray indexOfObject未找到以數字開頭的字符串

我遇到了indexOfObject問題。我正在使用用戶從一個數組中選擇來從另外兩個數組中選擇和顯示對象。我首先獲取它們選擇的對象的索引,然後使用它從其他兩個數組中獲取objectAtIndex。我知道這是非常基本的東西,我以前做過這個,但我從來沒有遇到像這樣的問題...

當數組中的字符串以字母開頭(a,b,c .. 。)一切正常。當字符串以數字開頭時,indexOfObject會返回一個可笑的長數字並使應用程序崩潰。用戶選擇的陣列是年齡段,所以如果他們選擇早產兒,新生兒,成年女性或成年男性,一切正常。如果他們選擇1年,2年,4年等。該應用程序崩潰。

這是我的代碼(我改變的變量和函數/方法的名稱)

這是從一個單獨的表視圖

- (void)ageGroupPicked:(NSString *)age { 

//Set the text for the ageGroupLabel passed from ageTableView 
ageGroupLabel.text = [NSString stringWithFormat:@"%@", age]; 

//Pass the string to the displayResults method 
[self displayResults:age]; 

}

  • 返回( void)displayResults:(NSString *)display {

    //將變量pAge設置爲arra y從ageGroupArray類型的索引 NSInteger pAge = [self.ageGroupArray indexOfObject:display];

    //使用頁面設置resultsOneLabel self.resultsOneArray.text = [self.resultsOneArray objectAtIndex:頁]的文本;

    //使用pAge設置結果的文本TWLabel self.resultsTwoLabel.text = [self.resultsTwoArray objectAtIndex:pAge];

}

我不是一個全職程序員,這樣下去容易在我身上。

+1

那可笑的長號碼是'NSNotFound',只是意味着你正在尋找未找到對象。你可以在小代碼示例中重現問題嗎? (請參閱http://sscce.org獲取指南。) – zoul

+0

我的觀點更多的是indexOfObject只在對象以字母開頭時才起作用。如果字符串以數字或字母開頭,爲什麼indexOfObject會關心。我知道對象在數組中,因爲我設置了NSLog來顯示它們在那裏。 – jojo

+0

它不關心字母和數字。問題必須在其他地方,但如果沒有向我們展示更多的代碼,就不可能分辨出來。 – zoul

回答

1

覈對NSNotFound結果指標:

NSInteger index = [self.ageArray indexOfObject:myObject]; 
if (index == NSNotFound) { 
    //the array does not contain myObject 
} 
+0

我的觀點更多的是indexOfObject只在對象以字母開頭時才起作用。如果字符串以數字或字母開頭,爲什麼indexOfObject會關心。我知道對象在數組中,因爲我設置了NSLog來顯示它們在那裏。 – jojo

+0

聽起來很嘈雜。請用可重現的示例代碼和/或數據記錄更新問題。 – shallowThought

+0

也標記您的目標操作系統(iOS/macOS) – shallowThought

相關問題