【发布时间】:2011-08-20 09:57:03
【问题描述】:
我无法从我的 NSMutableArray 中删除项目。我对 Objective-C 非常陌生,所以请多多包涵。
到目前为止,我有以下内容:如果其中包含某些文本,我正在尝试从数组中删除一行。在快速枚举时我不能这样做,所以我试图存储索引,以便在枚举完成后删除。但是,有人告诉我,这会从没有强制转换的整数中生成一个指针。糊涂了!
//First remove any previous Offending entry.
//Read hostfile into array.
NSString *hostFileOriginalString = [[NSString alloc] initWithContentsOfFile:@"/etc/hosts"];
NSMutableArray *hostFileOriginalArray = [[hostFileOriginalString componentsSeparatedByString:@"\n"] mutableCopy];
NSInteger hostFileOffendingLocation;
//Use a for each loop to iterate through the array.
for (NSString *lineOfHosts in hostFileOriginalArray) {
if ([lineOfHosts rangeOfString:@"Offending"].location != NSNotFound) {
//Offending entry found, so remove it.
//[hostFileOriginalArray removeObject:lineOfHosts];
hostFileOffendingLocation = [hostFileOriginalArray indexOfObject:lineOfHosts];
//NSLog(@"%@", hostFileOffendingLocation);
}
}
//Release the Array.
[hostFileOriginalArray release];
//Remove offending entry from Array.
[hostFileOriginalArray removeObject:hostFileOffendingLocation];
【问题讨论】:
-
这会在没有强制转换的情况下从整数生成指针,因为您将整数传递给
removeObject:。我认为removeObjectAtIndex:是您所追求的。另外,为什么要在尝试删除对象之前释放数组?
标签: objective-c cocoa nsmutablearray fast-enumeration