记录特定大小的数组

时间:2013-03-28 15:23:58

标签: iphone objective-c cocoa-touch

我为输入的值缓存了20个最大记录。 这是代码

NSMutableArray *startingArray = [[defaults objectForKey:@"startingTextArray"] mutableCopy];

if (startingArray == nil)
startingArray = [[NSMutableArray alloc] initWithCapacity:0];

if (![startingArray containsObject:self.starting.text])
[startingArray addObject:self.starting.text];

[defaults setObject:startingArray forKey:@"startingTextArray"];

问题是,如何才能修复20个值?例如,如果填充了20个空格,则下一个条目setObject将在第一个位置添加并删除第一个条目。

2 个答案:

答案 0 :(得分:0)

你必须检查你是否在你的第20个对象,以及你是否开始在索引0处替换对象

 NSMutableArray *startingArray = [[defaults objectForKey:@"startingTextArray"] mutableCopy];
    if (startingArray == nil)
        startingArray = [[NSMutableArray alloc] initWithCapacity:0];


if (![startingArray containsObject:self.starting.text] && (startingArray.count +1) <= 20)
     [startingArray addObject:self.starting.text];
else {
     [startingArray insertObject:obj atIndex:0];
     [startingArray removeObjectAtIndex:(startingArray.count - 1)];
}


[defaults setObject:startingArray forKey:@"startingTextArray"];

答案 1 :(得分:0)

使用一些计数器和模数

示例:

NSMutableArray *array = [[NSMutableArray alloc] initWithCapacity:20];
for (int i = 0; i < 42; i++)
    array[i % 20] = @(i);

打印:

40,     41,     22,     23,     24,     25,     26,     27,     28,     29,     30,     31,     32,     33,     34,     35,     36,     37,     38,     39