Objective-C通过NSString迭代获取字符

Non*_*one 0 iteration nsenumerator objective-c nsmutablearray

我有这个功能:

void myFunc(NSString* data) {
    NSMutableArray *instrs = [[NSMutableArray alloc] initWithCapacity:[data length]];
    for (int i=0; i < [data length]; i++) {
        unichar c = [data characterAtIndex:i];
        [instrs addObject:c];
    }
    NSEnumerator *e = [instrs objectEnumerator];
    id inst;
    while (inst = [e nextObject]) {
        NSLog("%i\n", inst);
    }
}
Run Code Online (Sandbox Code Playgroud)

我认为它失败了[instrs addObject:c].它的目的是遍历NSString的十六进制数.导致此代码失败的原因是什么?

Dav*_*har 5

A unichar不是一个对象; 它是一个整数类型.

NSMutableArray 只能持有物品.

如果你真想把它变成一个NSMutableArray,你可以包装在整数值NSNumber的对象:[instrs addObject:[NSNumber numberWithInt:c]];

但是,有什么馅的值到一个数组摆在首位的点?你知道如何通过字符串遍历并获得人物,为什么把它们放到一个数组只是通过他们再次重复?

另请注意:

  • "%i"NSLog格式需要一个整数; 你无法传递它的对象
  • 对于十六进制输出,您需要"%x",而不是"%i"