2013-09-27 109 views
0

我是編碼和objective-c的新手。我知道有很多類似的問題,但我想知道我的解決方案爲什麼不起作用。顛倒目標中的字符串

我爲自己創建了一個簡單的挑戰:將用戶鍵入的字符串顛倒爲textField,並將反轉的字符串顯示給控制檯。但是,這段代碼沒有工作,沒有錯誤,通知。

似乎reversedString只是沒有收到任何東西。

- (IBAction)countString:(id)sender { 
    NSString *string = [textField stringValue]; 
    NSUInteger count = [string length]; 
    [countView setStringValue:[NSString stringWithFormat:@"%@\n%lu", string, (unsigned long)count]]; 
    // Challenge starts here 
    NSMutableString *reversedString = [[NSMutableString alloc] initWithFormat:@""]; 
    for (NSInteger i = [string length] - 1; i >= 0; i--) { 
     NSLog(@"%li", (long)i); 
     unichar abc = [string characterAtIndex:i]; 
     NSString *charString = [NSString stringWithFormat:@"%c", abc]; 
     [reversedString stringByAppendingString:charString]; 
    } 
    NSLog(@"%@", reversedString); 
} 

回答

0

stringByAppendingString:返回一個新NSString,並在你的代碼的返回值被忽略,因爲你使用的是NSMutableString,與

[reversedString appendString:charString]; 
0

用任何物體使用方法代替

[reversedString stringByAppendingString:charString]; 

:NSString,NSNumber等。:

NSLog(@"%@",[self reverseObject:@12345]); 
NSLog(@"%@",[self reverseObject:@"Hello World"]); 

方法:

-(NSString*)reverseObject:(id)string{ 

string = [NSString stringWithFormat:@"%@",string]; 
NSMutableString *endString = [NSMutableString new]; 

while ([string length]!=[endString length]) { 
NSRange range = NSMakeRange([string length]-[endString length]-1, 1); 
[endString appendString: [string substringWithRange:range]]; 
} 
return endString; 
} 

日誌:

2014年4月16日11:20:25.312測試[23733:60B] 54321 2014年4月16日11:20:25.313測試[23733: 60b] dlroW olleH