Я определил основные данные для моего проекта и реализовал атрибут ENtity: isRealEntry
.Как настроить сохранение в основных данных?
@interface FTRecord : NSManagedObject
@property (nonatomic) NSTimeInterval lastUpdated;
@property (nonatomic) BOOL isRealEntry;
@end
Теперь, когда я сохранить контекст (NSManagedObjectContext *context;
)
NSError *error = nil;
BOOL successful = [context save:&error];
Я хотел бы сохранить только те объекты, которые имеют истинную isRealEntry
, в противном случае запись будет игнорироваться или отменить.
Как я могу это достичь?
Update:
Сначала я нашел решение Мартина очень многообещающим. Однако я получаю очень неприятный побочный эффект, когда я сохранить данные при входе в фоновом режиме:
- (void)applicationDidEnterBackground:(UIApplication *)application
{
[[FTRecordStore sharedStore] saveChanges];
}
Когда я возвращаюсь приложение, все предыдущие удаленные записи не пошли на реальный, но помеченные для удаления. Кажется, что у массива все они (реальные или нереальные в моем случае). Ячейки полностью гаснут и отображаются пустыми для всех записей.
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
FTRecord *record = [[[FTRecordStore sharedStore] getAllRecords] objectAtIndex:[indexPath row]];
FTRecordCellView *cell = [tableView dequeueReusableCellWithIdentifier:@"FTRecordCellView"];
[[cell notesLabel] setText:[record notes]];
return cell;
}
Я не уверен, как это решить. Мой магазин - одноэлементный. getAllRecords определяет содержимое выше для каждой ячейки. Следовательно, мне нужно иметь то же значение для getAllRecords, что и в tableView, иначе он сработает.
Другое предлагаемое решение с двумя источниками одного в памяти и в db также не представляется возможным, как я могу подавать один TableView с двумя источниками?
Update 2:
Я имел обидное упущение. Недостаточно удалить запись из контекста. Мне также пришлось удалить его из массива.
[allRecords removeObjectIdenticalTo:record];
Поэтому я забираю его обратно. Решение Мартина отлично работает. Однако мне все же интересно узнать, может ли UITableView действительно быть из двух источников (db/memory), как это предлагается в другом решении. Спасибо
Извините, Мартин, как вы предупреждали, вызвал некоторые проблемы, которые я дал в своем обновлении. Есть ли у вас другая идея относительно UITableView, использующего два источника (память/db)? – Houman
@Kave: посмотрите http://stackoverflow.com/questions/14004055/how-to-use-core-data-models-without-saving-them/14005159#14005159. Это похоже на предложение Дункана, но использует только один контекст управляемого объекта с двумя магазинами: «реальные» объекты назначаются хранилищу SQLite, а «нереальные» объекты назначаются хранилищу памяти. –