2012-02-22 6 views
0

self.tmpの出力がnullである理由がわかりません。ここで 文字列を追加できません

は、私が NSMutableStringとして宣言されて

[self.dict enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) 
{ 
    NSMutableString *t = [NSString stringWithFormat:@"%@ - %@", key, obj]; 
    [self.tmp appendString:t]; 
}]; 

NSLog(@"%@", self.tmp) --> print null; 

tmpを使用するコードです。

dict ivarにデータが含まれていることが確認できます。

+0

'self.temp'はどこでどのように初期化されていますか? – sch

+0

'self.tmp'の初期値は何ですか? – dasblinkenlight

答えて

3

self.tmpはそれ自体でnilです。あなたはそれを宣言しましたが、それを設定したり、最初に割り当てることはありますか? appendは、追加しているものが既存の文字列の場合にのみ機能します。

Objective-Cでは、nilオブジェクトに追加しようとするとエラーは表示されません。何も起こっていないという結果しか表示されません。

ちょうどあなたがここに投稿コードの前、あなたはこれをしたいかもしれません:あなたが開始する前に

self.tmp = [NSMutableString string]; 
+0

上記のシナリオでは、辞書データに基づいて単一の文字列を作成するための最良の方法はありますか? – foho

+0

ああ、それを手に入れよう。ありがとう! – foho

0

あなたはself.tmp != nilことを確認することはできますか?

+0

いいえ、それはゼロです。 – foho

+0

@foho:他の人が私のところで詳細に投稿したように、それがあなたの問題の原因です。 – JeremyP

0

self.tmpは作成されません。 ドゥ:

self.tmp = [NSMutableString new];

1

あなたはそれはあなたが問題を抱えてすることができ、なぜ唯一の問題だ、あなたのIVARのtmpが初期化され、割り当てられている必要があり、@""としてそれを初期化してください。あなたは、クラスのメソッドのいくつかを呼び出す自動解放オブジェクトを使用することができ、明示的に割り当てる必要はありません。

self.temp=[NSMutableString stringWithString:@""]; 

あなたの文字列がゼロに設定されている場合、あなたはnilに何かを追加し、ゼロ缶以来されていますあなたはこの予期しない結果を得ることはできません。

関連する問題