2011-09-09 48 views
0

我的方法旨在從輸入字符串中提取遊戲級別的信息。輸入指定2D數組播放區域的大小,以及2D數組中的哪些點上存在哪些項目。例如,「4,3.a,b,c.d,e,f.g,h,i.j,k,l」將包括4列和3行,看起來像這樣(不包括連字符):NSString「Expected」:'before']'token'error

一個--- --- d ---克Ĵ

b ---電Ë---高---ķ

ç--- F ---我--- l

代碼工作正常,直到最後一行,我得到的錯誤: 「預期」:'之前']'標記'。

我一直在試圖解決這一段時間,所以我會很尷尬,如果它是我錯過了一些愚蠢的東西!任何幫助將非常感激。

-(void)readLevelDataFromString:(NSString*)inputString { 
    //remove spaces from the input 
    NSString *tempString = [inputString stringByReplacingOccurrencesOfString:@" " withString:@""]; 

    //make mutable 
    NSMutableString *levelDataString = [NSMutableString stringWithString:tempString]; 

    //trim first 4 characters, which we don't need 
    [levelDataString deleteCharactersInRange:NSMakeRange(0, 4)]; 

    //separate whole string into an array of strings, each of which contains information on the particular column 
    NSArray *levelDataStringColumns = [levelDataString componentsSeparatedByString:@"."]; 

    NSAssert([levelDataStringColumns count] == numColumns, @"In the level data string, the number of columns specified did not match the number of X tiles present."); 

    NSString *columnString = [[NSString alloc] initWithString:[[levelDataStringColumns] objectAtIndex:0]]; 
} 

回答

5

您有一個額外的一套[]。你想:

NSString *columnString = [[NSString alloc] initWithString:[levelDataStringColumns objectAtIndex:0]]; 
+0

謝謝 - 這樣一個簡單的辦法。我以前怎麼看不到它? 感謝所有其他人的迴應! – JimmyB

2

試試這個最後一行:

NSString *columnString = [[NSString alloc] initWithString:[levelDataStringColumns objectAtIndex:0]]; 
4

你必須在最後一行一個額外的支架,將其更改爲這樣:

NSString *columnString = [[NSString alloc] initWithString:[levelDataStringColumns objectAtIndex:0]];