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:不会将新字符串附加到位,它会返回一个字符串值,该值是两个原始字符串的连接。您需要将该值分配回output.

或者,制作output一个NSMutableString,然后您可以使用-appendFormat:.

于 2012-08-30T15:10:04.567 回答
1

output的变量设置为不可字符串。所以你不能直接向它添加任何内容。您可以使用其内容创建一个新字符串并将其重新分配给自身,但您不能附加新内容。

您应该尝试使用NSMutableStringappendFormatappendString

        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 回答