2013-11-01 39 views
-1

我正在做一個函數,應該返回一個二維數組的字。一次使用英語,一次使用斯洛伐克語。這些單詞存儲在TXT文件中。我正在理解txt,它正在工作,但編譯器似乎在返回NSString 2d數組時遇到了問題。你可以看看嗎?Objective C - 返回二維字符串數組

這是最後但一行給出錯誤的函數: 不相容指針類型返回 '的NSString * __強[[陣列計數] [2]' 從與結果類型 '的NSString'

- (NSString*) getWordArray 
{ 
    NSArray *array = [self getTxtArray]; 
    NSString *str[[array count]] [2]; 
    for(int i = 0; i < [array count]; i++) 
    { 
     NSArray *translation = [array[i] componentsSeparatedByString:@" "]; 
     str[i][0] = [translation objectAtIndex:0]; 
     str[i][1] = [translation objectAtIndex:1]; 
    } 
    return str; 
} 

的函數這些功能正常工作。只是爲了顯示你的情況下,因爲他們的問題一個

- (NSString*) getTxt 
{ 
    NSString *filePath = [[NSBundle mainBundle] pathForResource:@"test" ofType:@"txt"]; 
    if (filePath) 
    { 
     NSString *contentOfFile = [NSString stringWithContentsOfFile:filePath encoding:NSUTF8StringEncoding error:nil]; 
     return contentOfFile; 
    } 
    return @""; 
} 

- (NSArray*) getTxtArray 
{ 
    NSArray* array = [[self getTxt] componentsSeparatedByString:@"\n"]; 
    return array; 
} 

回答

1

您需要使用NSMutableArray爲字串的二維數組用於你有興趣。你getWordArray方法則是這樣的:

- (NSArray *)getWordArray 
{ 
    NSArray *array = [self getTxtArray]; 
    NSMutableArray *strArray = [NSMutableArray array]; // This is your 2D array 
    for(int i = 0; i < [array count]; i++) 
    { 
     NSArray *translation = [array[i] componentsSeparatedByString:@" "]; 
     // translation is assumed to be an array with two elements 
     [strArray addObject:translation]; 
    } 
    return strArray; 
} 

這工作,因爲一個二維數組是數組的數組,因爲componentsSeparatedByString:返回一個數組,我們可以每個東西的這些放入容器陣列。