如何在NSMutableArray中存储最多5个对象?

时间:2014-10-24 13:54:28

标签: ios objective-c arrays

我正在创建一个NSdictionarys数组并将该数组放入NSUserDefaults中。然后我将数组数据放在最近添加的tableview中。我试图得到它,因此它将存储添加到该数组的5个最新对象。我怎么能这样做?以下是我的代码:

- (IBAction)searchButton:(UIButton *)sender {

[_jobDic setObject:_jobField.text forKey:@"jobRecent"];
[_jobDic setObject:_locationField.text forKey:@"locationRecent"];
[_recentJobArray addObject:_jobDic];

[_recentDefaults setObject:_recentJobArray forKey:@"recentJobs"]

[_recentDefaults synchronize];    

}

2 个答案:

答案 0 :(得分:2)

假设您指的是_recentJobArray,您可以这样做:

if (_recentJobArray.count == 5) {
    [_recentJonArray removeObjectAtIndex:0]; // remove oldest
}
[_recentJobArray addObject:_jobDic];

答案 1 :(得分:1)

如果您按照从最新到最旧的顺序对阵列​​进行排序,那么疯狂的解决方案将很有效。否则,您需要在每个字典中保存日期键/值对,然后遍历该数组以查找最旧的项目。代码可能看起来像这样

NSDictionary *oldest;
for (NSDictionary *aJobDict in _recentJobArray)
{
  NSDate *dateOfThisDict = aJobDict[@"date"]; //Assumes each dict has a key @"date"
  if (!oldest || [oldest[@"date"] compare: dateOfThisDict] == NSOrderedDesending)
    oldest = aJobDict;
}
[_recentJobArray removeObject: oldest];
[_recentJobArray addObject: newDict];