2014-04-20 65 views
0

在下面的代碼,我傳遞數組,看起來像這樣:第一個元素以換行開始

( AAAA | BBBBB | CCCCC | DDDDD | EEEEE )

這只是另一個數組的元素。

我需要提取此元素的第一個組件並將其作爲字符串返回。容易做到,你會說。是的,當我需要提取第二,第三,第四個組件時。然而,當我嘗試用下面的代碼來提取第一部分:

-(NSString*) navigationTypeIncludesSeparator : (NSMutableArray*) navPoint { 

    NSString* navigationTypeSelected; 

    if ([navPoint isEqual: @"N/A"] || navPoint == nil) 
    { 
     navigationTypeSelected = NAVDATA_DEFAULT; 
    } 

    else 
    { 
     NSString* tempStr = [navPoint description]; 

     NSArray* arrayTemp = [tempStr componentsSeparatedByString:@"|"]; 

     navigationTypeSelected = [arrayTemp objectAtIndex:0]; 

     navigationTypeSelected = [navigationTypeSelected uppercaseString]; 
    } 
    return navigationTypeSelected; 
} 

代替AAAAA,我得到:

「\ n \ AAAAA」

有什麼我失蹤?

謝謝!

回答

1

您不應該使用description從數組中獲取字符串值。這意味着打印在控制檯或用戶界面中,幷包含諸如換行符等奇怪的東西。

如果你在一個數組中傳遞,你可以格式化數組,所以值0是「AAAA」,值1是「BBBB」等?或者你可以傳遞字符串「AAAA | BBBBB | CCCCC | DDDDD | EEEEE」而不是?在我的代碼,如果我這樣做:

NSArray* arrayTemp = [@"AAAA|BBBBB|CCCCC|DDDDD|EEEEE" componentsSeparatedByString:@"|"]; 
NSString *navigationTypeSelected = [arrayTemp objectAtIndex:0]; 
navigationTypeSelected = [navigationTypeSelected uppercaseString]; 
NSLog(@"Answer: %@", navigationTypeSelected); 

然後它很好。但是你可以輕鬆地傳入一個數組並請求[someArray firstObject];

+0

謝謝。我不知道「描述」。更改爲:'NSString * tempStr = [navPoint componentsJoinedByString:@「,」]; '它工作。非常感謝您指出正確的方向! –