0

次のコード行があります

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

次の行に置き換えたい

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

ここで、garrはグローバルメソッドからのグローバル配列です。

問題は、最初の行を呼び出すときにコードが正常に機能することですが、2番目の行を使用するとコードがクラッシュします。ヘルプとアイデアに感謝します。最初の行はNSArrayですが、garr変数のソースはNSMutable配列です。ギャル

     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に送信されました' *最初のスローでスタックを呼び出します:– </ p>

これは、最終値を生成するコードです

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

ありがとう

4

1 に答える 1

2

問題はにありますprintf("%s ", [element UTF8String]);

NSNumberUTF8Stringメソッドはなく、。だけですstringValueprintfどちらもできませんがNSLog("%@", [element stringValue])、可能です。またはNSLog("%d", [element intValue])、intであることがわかっている場合は可能です。

于 2012-09-02T12:02:26.933 に答える