2014-10-24 2 views
-1

Я создаю массив NSdictionarys и помещаю этот массив в NSUserDefaults. Затем я помещаю данные массива в недавно добавленное представление таблицы. Я пытаюсь получить его, чтобы он сохранил 5 последних объектов, добавленных в этот массив. Как я могу это сделать? Ниже мой код:Как хранить максимальное количество 5 объектов в NSMutableArray?

- (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];  

}

+1

Я не понял вашу точку зрения. Что вам нужно в точности? – Sawsan

ответ

2

Предполагая, что вы имеете в виде _recentJobArray, вы можете сделать это:

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

Точно то, что я пытался сделать! Благодаря!! – Josher

1

Если вы храните ваш массив отсортированы в новейшем к старейшему порядку то решение maddy будет работать хорошо. В противном случае вам нужно сохранить пару ключей/значений даты в каждом словаре, а затем пропустить массив, ищущий самый старый элемент. Код может выглядеть примерно так:

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]; 
+0

Спасибо за ответ! У меня массив отсортирован от самого нового до самого старого, когда я подтягиваю его в tableview. NSArray * reverseedArray = [[_recentJobArray reverseObjectEnumerator] allObjects]; – Josher

Смежные вопросы