我有扫描并返回NSString
的代码,如下所示:
NSString *GetText = [[NSString alloc] init];
NSString *ScannedText;
NSScanner *TheScanner = [NSScanner scannerWithString:somLongString];
int start=0;
int index=0;
int ObjectCount;
char c;
for (int i = 0; i < [somLongString length] ; i++) {
c = [somLongString characterAtIndex:i];
if (c == '=') {
start = i+1;
[TheScanner setScanLocation:start];
[TheScanner scanUpToString:@"&" intoString:&GetText];
NSLog( @"%@",GetText);
[UserValuesObject insertObject:GetText atIndex:index];
NSLog(@"%@",[UserValuesObject objectAtIndex:index]);
index++;
}
}
现在我想将每次创建的GetText
对象添加到数组中。当我尝试打印第一个:
NSLog(@"%@",GetText);
它有效!但是当我想把它添加到对象然后打印(用于调试)时,我在每个日志的打印上都得到null
:
NSLog(@"%@",[UserValuesObject objectAtIndex:index]);
任何想法?
答案 0 :(得分:0)
我认为NSMutableArray,UserValuesObject是nil,因此不允许你设置数组的任何对象。
在进入for循环之前,请尝试检查数组是否为nil。
即
if (UserValuesObject == nil) {
UserValuesObject = [NSMutableArray array];
}
答案 1 :(得分:0)
您可能没有正确初始化阵列(或根本没有),请尝试此操作(包括语法改进):
NSString *getText = [NSString string];
NSScanner *scanner = [NSScanner scannerWithString:someLongString];
NSUInteger start = 0;
NSUInteger index = 0;
NSMutableArray *userValuesObject = [NSMutableArray array];
// You should save the length of someLongString before starting the loop
// so that each iteration doesn't have to call length to see if i has
// reached length yet
for (int i = 0, len = [someLongString length]; i < len; ++i) {
if ([somLongString characterAtIndex:i] == '=') {
[scanner setScanLocation:(i + 1)];
[scanner scanUpToString:@"&" intoString:getText];
NSLog(@"%@", GetText);
[userValuesObject insertObject:getText atIndex:index];
NSLog(@"%@", [userValuesObject objectAtIndex:index]);
++index;
}
}
insertObject:atIndex:
参数
anObject
- 要添加到数组内容的对象。这个值必须 不是零。重要提示:如果anObject为nil,则为RaisesanNSInvalidArgumentException。
index
- 数组中插入anObject的索引。这个 value不得大于数组中元素的数量。重要提示:如果index大于数组中元素的数量,则引发NSRangeException。
如果索引已被占用,则索引处及以后的对象为 通过在他们的指数上加1来腾出空间。注意NSArray 对象不像C数组。也就是说,即使您指定了大小 创建数组时,指定的大小被视为“提示”; 数组的实际大小仍为0.这意味着你不能 在索引处插入一个大于当前计数的对象 阵列。例如,如果数组包含两个对象,则其大小为2, 所以你可以在索引0,1或2处添加对象。索引3是非法的 出界;如果您尝试在索引3处添加对象(当大小时 数组是2),NSMutableArray引发异常。