2012-07-23 46 views
0

我想將字符串拆分成部分並插入到表中我應該怎麼做?拆分nsstring並將其放入tableview

我得到用於陣列的分割的誤差,其: - [__ NSArrayI componentsSeparatedByString:]:無法識別的選擇發送到實例0x7a421e0

NSArray *BusRoute = alightDesc; 
int i; 
int count = [BusRoute count]; 
for (i = 0; i < count; i++) 
{ 
    NSDictionary *dic = [BusRoute objectAtIndex: i]; 
    NSDictionary *STEPS = [dic valueForKey:@"STEPS"];    
    NSString *AlightDesc = [STEPS valueForKey:@"AlightDesc"]; 
    NSLog(@"AlightDesc = %@", AlightDesc); 

    NSArray *aDescArray = [AlightDesc componentsSeparatedByString:@","]; 
    NSLog(@"aDescArray = %@", aDescArray); 
} 

這是我拆分,我得到它從字符串NSLog

AlightDesc = (
"Block1", 
"Block2", 
"Block3" 
) 

請幫助我卡住了謝謝。

+0

您的'AlightDesc'包含數組,它是一個數組。不是字符串。那就是爲什麼它會拋出異常 – janusbalatbat 2012-07-23 08:47:41

+0

我該怎麼辦?任何建議 – sihao 2012-07-23 09:31:18

+0

閱讀你的問題,你不需要分割你的數據,你可以在你的表格中顯示出來'[AlightDesc objectAtIndex:indexPath.row]'而且,'NSArray的* AlightDesc =〔工序valueForKey:@「AlightDesc」] ;'而不是'NSString' – janusbalatbat 2012-07-23 09:32:46

回答

0

目標C不是一個強類型語言。你所知道的關於[STEPS valueForKey:@"AlightDesc"]的確定是它會返回一個對象(類型爲id)。編寫NSString *AlightDesc = [STEPS valueForKey:@"AlightDesc"]時,編譯器沒有投訴,因爲NSString *是有效的對象類型。不幸的是,您的代碼中存在邏輯錯誤,因此實際上存儲在密鑰@"AlightDesc"下的內容是NSArray。正如其他人所提到的,NSArray不會對componentsSeparatedByString:做出響應,因此在運行時會出現錯誤。

這個簡單的解決方法是糾正你的邏輯:首先存儲一個NSString或者把你得到的結果作爲NSArray。正如@janusfidel提到的,通過使用objectAtIndex:可以在表格中完美地使用NSArray來獲取所需條目的字符串。

在一些更復雜的情況下,你可能不知道你會得到了一本字典的特定鍵。在這種情況下,在Objective C中,您只需詢問對象:

id anObject = [STEPS valueForKey:@"AlightDesc"]; 
if ([anObject isKindOfClass:[NSString class]]) { 
    NSString *aString = (NSString *)anObject; 
    // Treat as a string ... 
} else if ([anObject isKindOfClass:[NSString class]]) { 
    // Object is an array ... 
0

你的NSString * AlightDesc應該是這樣的

NSString *AlightDesc = "Block1,Block2,Block3"; 
NSArray *aDescArray = [AlightDesc componentsSeparatedByString:@","]; 

如果字符串是你說的這是

AlightDesc = ("Block1","Block2","Block3"); 

那麼你的字符串是問題,因爲它已經分手了。

相關問題