2010-11-30 6 views
0

私の目はこれを理解しようと何時間も苦労しています。私はかなりの時間オンラインで答えを探しました(どれくらいのことを言うのは恥ずかしいでしょう...)。 私がしようとしているのは、NSMutableArrayとNSStringを保持するNSMutableArrayであるanExpressionのfor-inループを使用して列挙することです。 NSLogで変数ansを表示すると、空の文字列が返されます。 何が間違っていますか?NSMutableArrayからNSstringを構築する

NSString *ans = @""; 
    for (id obj in anExpression) 
    { 
     if ([obj isKindOfClass:[NSString class]]) 
      [ans stringByAppendingString:(NSString *)obj]; 
     if ([obj isKindOfClass:[NSNumber class]]) 
      [ans stringByAppendingString:(NSString *)[obj stringValue]]; 

     NSLog(@"String so far: %@ ", ans); 
    } 

答えて

0

ねえ、悪い符号化フォーマットのため申し訳ありませんが、それを再度投稿...

NSString *ans = @""; 
for (id obj in anExpression) 
{ 
    if ([obj isKindOfClass:[NSString class]]) 
     [ans stringByAppendingString:(NSString *)obj]; 
    if ([obj isKindOfClass:[NSNumber class]]) 
     [ans stringByAppendingString:(NSString *)[obj stringValue]]; 

    NSLog(@"String so far: %@ ", ans); 
} 
[ans autorelease]; 
NSLog(@"final string is: %@ ", ans); 

return ans; 
+0

私はあなたのオリジナルを編集しましたが、これは必要ありません。 –

+0

'[ans autorelease];'は間違っています - 'ans'は決して' alloc'-edされず、 'stringByAppendingString:'から返されたオブジェクトは解放されません。 –

+0

よろしくお願い致します。私が遭遇する主な問題は - アレイ内にあるオブジェクトでNSStringを満たすことができない - あなたは何か考えがありますか? – Joe

2

私はあなたが

ans = [ans stringByAppendingString:(NSString *)obj]; 

だけでなく

[ans stringByAppendingString:(NSString *)obj]; 

NSStringsを意味だと思います不変です - 追加することはできません。 -stringByAppendingString:新しい文字列を返します(ansに割り当てることができます)。

また、NSMutableString-appendString:の方法を使用することもできます。

0

メソッドstringByAppendingString:は、新しいの文字列を受信者に追加して返します。

あなたがしたいですans = [ans stringByAppendingString:obj];

関連する問題