2

このコードが機能しない理由を誰かに説明してもらえますか? 配列の要素を NSLog に送信しても問題はありませんが、文字列に追加されていないようです。配列要素を文字列にキャストする必要がありますか?

    success:^(NSURLRequest *request, NSHTTPURLResponse *response, id JSON) {
        NSArray *dataarray=[JSON valueForKey:@"Data"];
        NSLog(@"Response: %@", [JSON valueForKeyPath:@"Status"]);
        NSString* output = [NSString stringWithFormat:@"response: %@",[JSON valueForKeyPath:@"Status"]];
        int x;
        for (x=0; x<[dataarray count]; x++) {
            NSLog(@"%d : %@",x, [dataarray objectAtIndex:x]);
            [output stringByAppendingFormat:@" %@ ",[dataarray objectAtIndex:x]];
        }

        //NSLog(@"%@", JSON);
        NSLog(@"%@", output);
        self.outPut2.text=output;    }
4

3 に答える 3

3

関数

 [output stringByAppendingFormat:@" %@ ",[dataarray objectAtIndex:x]];

元の文字列を変更せずに新しい文字列を返し、どこにも保存していません。あなたはこのように行くべきです:

output = [output stringByAppendingFormat:@" %@ ",[dataarray objectAtIndex:x]];
于 2012-08-30T15:09:04.537 に答える
2

変数output不変 NSStringです。-stringByAppendingFormat:新しい文字列を所定の位置に追加せず、2つの元の文字列を連結した新しい文字列値を返します。その値をに戻す必要がありますoutput

別の方法として、を作成outputするNSMutableStringと、で連結を行うことができます-appendFormat:

于 2012-08-30T15:10:04.567 に答える
1

output変数は不変の文字列に設定されてます。そのため、コンテンツを直接追加することはできません。そのコンテンツを使用して新しい文字列を作成し、それ自体に再割り当てすることはできますが、新しいコンテンツを追加することはできません。

NSMutableStringappendFormatまたはappendStringを使用してみてください

        NSMutableString* output = [NSMutableString stringWithFormat:@"response: %@",[JSON valueForKeyPath:@"Status"]];
        int x;
        for (x=0; x<[dataarray count]; x++) {
            NSLog(@"%d : %@",x, [dataarray objectAtIndex:x]);
            [output appendFormat:@" %@ ",[dataarray objectAtIndex:x]];
        }
于 2012-08-30T15:09:50.020 に答える