【问题标题】:NSMutablearray define init issueNSMutablearray 定义初始化问题
【发布时间】:2012-09-02 11:39:58
【问题描述】:

我有以下代码行

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]: unrecognized selector sent to instance 0x4b1a170' * Call stack at first throw: –

这是生成最终值的代码

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];

谢谢

【问题讨论】:

  • 错误信息、崩溃日志、堆栈跟踪、核心转储?
  • 您的第一个数组包含字符串,第二个数组包含数字。看起来您未在此处显示的其他代码,希望该数组仍包含字符串...
  • @OracleOracle:请更新您的问题,不要在评论中粘贴错误消息。

标签: iphone objective-c xcode arrays nsmutablearray


【解决方案1】:

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

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

【讨论】:

  • 顺便说一句,您可以使用快速枚举,而不是一路实例化枚举器:for (NSNumber *num in marray) { NSLog("%@", [num stringValue]); }
  • 不要使用相等的 '=' 来比较对象。使用isEqual:
  • 嘿,你可以printf("%s", [[element stringValue] UTF8String]);
  • 一切顺利,非常感谢问题出在 NSstring 和 Nsnumber 上,谢谢
猜你喜欢
  • 2011-10-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-02-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多