2011-08-07 72 views
0

首先我想感謝大家試圖解決我的問題。我是一個noobie,所以任何幫助將不勝感激。使用componentsSeperatedByString將NSString轉換爲NSarray問題

我已經聲明(NSString *data)已從網站檢索到內容。我已經通過我的代碼的各個部分測試過數據是否在字符串中,並且是正確的。

字符串中的數據是完全如下:

嗒嗒2222,3333,1111 222 444 5555,< BR/>嗒嗒3333,4444,2222 333 555,< BR/>嗒嗒4444 ,5555,3333 444 666

該模式持續一段時間。我想在數組中解析這些數據,所以它被「,」分開。因此;我宣佈一個叫(NSArray *storage)陣列,然後我會做:

storage = [dat componentsSeperatedByString:","]; 

然後我有一個名爲(UILabel *label)標籤。它通過界面生成器連接,屬性設置以及綜合。

然後我去:

label.text = [storage objectAtIndex:0]; 

我運行在iPhone模擬器,當我按我的應用程序的按鈕,這將激活變化,iPhone模擬器存在主屏幕,所有的應用程序的位置。 這是怎麼回事?爲什麼不顯示blah 2222

謝謝!

+0

您可以檢查XCode中調試/控制檯窗格的內容嗎?它應該爲您提供崩潰的堆棧幀。 – mmccomb

+0

你在這裏提供的代碼是正確的,你的應用程序可能在其他地方崩潰。先嚐試運行靜態分析器(Xcode 4中的shift + cmd + B)。 –

+0

@ficheck我運行靜態分析儀,一切都回來了「好吧」 – Jimmy13

回答

0

可以使用此片的代碼:

NSString *data = @"blah 2222, 3333, 1111 222 444 5555,<br/> blah 3333, 4444, 2222 333 555, <br/> blah 4444, 5555, 3333 444 666"; 
NSArray *storage = [data componentSeparatedBy:@","]; 
NSString *first= [data objectAtIndex:0]; 
NSString *second = [data objectAtIndex:1]; 
///... and so on 
//or 
label.text = [data objectAtIndex:2]; 
1

componentsSeparatedByString:返回一個autoreleased陣列。當您點擊按鈕時,您的storage陣列可能已經解除分配。爲數組使用保留屬性,而不是直接將其分配給實例變量。

+0

相信你是正確的。我將如何使用保留的財產?你的意思是@property(非原子,保留)NSSarray *存儲? 再次感謝 – Jimmy13

+0

是的,不要忘記'@ synthesize' .m文件中的屬性,然後只需使用'self.storage = ...'而不是'storage = ...'。 – omz