1

我正在为输入的值缓存 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 在第一个位置添加并删除第一个条目。

4

2 回答 2

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"];
于 2013-03-28T15:28:34.937 回答
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

于 2013-03-28T15:36:19.300 回答