我正在尝试将字符串插入到 NSMutableArray 中的特定位置,所以我已经完成
[myMutableArray insertObject:newString atIndex:219];
了顺便说一句,当我这样做时,[myMutableArray count]
它返回 273,所以我知道有足够的元素。然而,问题是每次我尝试这个时它都会给出一个 NSRangeException。奇怪的是,当我记录[myMutableArray class]
它时它返回_ _NSArrayM,但是当出现异常时,它说我正在调用[__NSCFString insertString:atIndex:],这就是错误的来源。我肯定在使用 insertObject,它绝对是一个可变数组。有谁知道我的问题可能是什么?此外,当我使用断点时,它会突出显示我发布的第一段代码,所以这就是异常所在。
allIDs = [self allIDs];
[allIDs insertObject:[newStudent idNumber] atIndex:x];
- (NSMutableArray*) allIDs
{
if (!allIDs) {
allIDs = [[NSMutableArray alloc] init];
}
filePath = [[NSString alloc] init];
NSError *error;
filePath = [[self getDocumentDirectory] stringByAppendingPathComponent:@"List of Student IDs"];
NSString *txtInFile = [[NSString alloc] initWithContentsOfFile:filePath encoding:NSUnicodeStringEncoding error:&error];
if(!txtInFile) {
return nil;
}
NSMutableString *tempName = [NSMutableString string];
for (int i = 0; i < [txtInFile length]; i++) {
if ([txtInFile characterAtIndex:i] == '*') {
[allIDs addObject:tempName];
tempName = [NSMutableString string];
} else {
[tempName appendFormat:@"%c", [txtInFile characterAtIndex:i]];
}
}
return allIDs;
}
因此,我返回并循环将其插入到 219 的所有索引中,然后打印出索引以查看它开始在哪个索引处引发异常。
for (int i = 0; i < 219; i++) {
NSLog(@"%i", i);
[allIDs insertObject:newStudent.idNumber atIndex:i];
}
出于某种原因,它打印了最多 218 个没有问题的所有内容,然后它跳到 801505682082758655 并记录了很多次,然后才出现超出范围的异常