如何从NSMutableArray复制到NSMutableString?

时间:2012-03-18 17:27:54

标签: objective-c nsmutablearray

我试图在NSMutableArray中添加一些字符串,而不是想复制元素0(零) 从NSMutableArray到NSMutableString

[MS appendString:str]

此行引发错误。

有什么问题? 一个MutableArray元素不能分配给NSString? (感谢任何回复)

错误输出是:

  

由于未捕获的异常'NSInvalidArgumentException'而终止应用程序,原因:' - [__ NSCFNumber长度]:无法识别的选择器发送到实例0x6c82440'

这是我的代码:

NSMutableArray *A=[[NSMutableArray alloc]init];
NSMutableString *MS=[NSMutableString stringWithString:@"first"];

for (int i=0; i<=15;i+=2) {
    [A addObject:[NSNumber numberWithInteger:i]];
}

NSString *str;

for (int x=0; x<[A count]; x++) {
    str=[A objectAtIndex:0];
    [MS appendString:str];//ERROR HERE
}

[A release];

1 个答案:

答案 0 :(得分:2)

您正在向数组中添加NSNumber,而不是在对开的行中添加字符串:

[A addObject:[NSNumber numberWithInteger:i]]; // here you are adding numbers

因此,当您稍后从数组中读取它们时,它们是仍然数字,您必须从它们创建字符串:

NSString *str;
NSNumber *number;

for (int x=0; x<[A count]; x++) {
    number = [A objectAtIndex:0]; // You should probably replace 0 by x here.
    str = [number stringValue]; // transform number into a string
    [MS appendString:str];
}

[A release];

但是如果你想让数组存储字符串而不是数字,那么用以下内容替换第一个循环:

for (int i=0; i<=15;i+=2) {
    [A addObject:[[NSNumber numberWithInteger:i] stringValue]];
}

或者

for (int i=0; i<=15;i+=2) {
    [A addObject:[NSString stringWithFormat:@"%d", i]];
}