NSMutable addObject问题

时间:2011-07-19 19:54:04

标签: objective-c nsmutablearray

Noob在这里遇到困难,可能会做一些愚蠢的事情,并会感激一些指导。

我在.h文件中声明了一个NSMutableArray(resultArray),在.m文件中设置了@property和@synthesize。

在initWithNibName中,我正在为数组执行alloc和init:

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil {
    if ((self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil])) {
        // Custom initialization
        resultArray = [[NSMutableArray alloc] init];
    }
    return self;
}

在我的一个方法中,我正在尝试在for循环中执行addObject,但无论我尝试该数组似乎都不包含对象(通过使用objectAtIndex或count):

for (int i=[resultNumber length]; i>0; i--) {   
    NSString *theNumberRes = [NSString stringWithFormat:@"%c",[resultNumber characterAtIndex:i-1]]; 
    [resultArray addObject:theNumberRes];
}

NSLog(@"array count: %i", [resultArray count]);

我可以单步执行代码,看到代码在预期中运行多次,但NSLog永远不会给出0以外的结果(并且悬停在resultArray上时始终显示0个对象。(简而言之,数组中的每个对象都应该是反向字符串中的字符 - 例如,如果resultNumber是12345,则数组应该存储5,4,3,2,1)。

我已经看到其他一些问题提出了类似的问题,但他们要么似乎没有帮助,要么我不理解答案,也不想用我的问题劫持别人的问题。

有人可以告诉我如何使这个工作吗?

2 个答案:

答案 0 :(得分:1)

问题是是否调用- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil方法。还有其他初始化例程,例如

-(id)init; 
-(id)initWithCoder:(NSCoder)aDecoder;

如果你的视图是从.xib文件加载的,那么有可能会调用最后一个,而不是你正在初始化数组的那个。

答案 1 :(得分:0)

%c正在弄乱你。看这里

http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/Strings/Articles/formatSpecifiers.html#//apple_ref/doc/uid/TP40004265-SW1

这适用于8位无符号字符。如果你的字符串包含utf-8字符,那么这将不起作用。您可以使用%C,或者您应该使用NSString initWithBytes:length:encoding