NSMutablearray定义init问题

时间:2012-09-02 11:39:59

标签: iphone objective-c xcode arrays nsmutablearray

我有以下代码行

NSMutableArray *marray = [[NSArray arrayWithObjects: @"4", @"1", @"9", nil]mutableCopy];

我希望用以下行替换它

NSMutableArray  *marray = [[NSMutableArray alloc]initWithArray:garr];

其中garr是来自全局方法的全局数组

问题是代码在调用第一行时工作正常,但在使用第二行时代码崩溃,感谢你的帮助和想法谢谢,我知道第一个是NSArray但是garr变量源是NSMutable数组  这是garr的代码

     garr = [[NSMutableArray alloc]init];
    for (int x = 0; x < 10; x++) {
        [garr addObject:[NSNumber numberWithInt: arc4random()%200]];

这是错误消息 控制台错误:2012-09-02 14:46:42.976 sort_alg [1561:207] - [NSCFNumber UTF8String]:无法识别的选择器发送到实例0x4b1a170 2012-09-02 14:46:42.978 sort_alg [1561:207] *由于未捕获的异常'NSInvalidArgumentException'终止应用程序,原因:' - [NSCFNumber UTF8String]:无法识别的选择器发送到实例0x4b1a170'* 第一次调用堆栈: -

这是生成结束值的代码

NSString *element; 
NSEnumerator *iterator = [marray objectEnumerator];
while ((element = [iterator nextObject]) != nil)
printf("%s ", [element UTF8String]);
printf("\n");
[marray release];   // array needs to be released! 
[pool release];

感谢

1 个答案:

答案 0 :(得分:2)

问题在于printf("%s ", [element UTF8String]);

NSNumber没有UTF8String方法,只有stringValue。你不能printf,但如果你知道它是一个int,你可以NSLog("%@", [element stringValue])NSLog("%d", [element intValue])