我试图获取数组中对象的最后x个数字并将其存储在另一个数组中。

像这样工作:

    NSMutableArray *LastLines = [[LogLines subarrayWithRange:NSMakeRange(0, [LogLines count])] mutableCopy];

但是,这不是:
NSMutableArray *LastLines = [[LogLines subarrayWithRange:NSMakeRange(([LogLines count]-4), [LogLines count])] mutableCopy];

并且日志中显示以下错误:

2013-03-13 15:00:43.475 [38565:303] *-[NSArray subarrayWithRange:]:范围{83255,83259}超出了范围[0 .. 83258]

但是范围似乎应该在范围之内,所以我不确定为什么会出现此错误。

最佳答案

您可以使用NSArray -subarrayWithRange:方法作为建议的其他答案,但是请注意,如果范围超出数组计数(例如,获取最后10行,而数组仅包含4个元素),则会引发异常!

为了避免这种情况,只需先使用if来检查数组计数...

NSArray *logs = <some long array>
int lastLogsCount = 100;
if (logs.count > lastLogsCount) { // check count first to avoid exception
    logs = [logs subarrayWithRange:NSMakeRange(logs.count - lastLogsCount, lastLogsCount)];
}

10-01 15:55
查看更多