我已經爲我的項目定義了一個核心數據,並實施了一個稱爲isRealEntry
的ENtity:屬性。如何自定義保存在覈心數據?
@interface FTRecord : NSManagedObject
@property (nonatomic) NSTimeInterval lastUpdated;
@property (nonatomic) BOOL isRealEntry;
@end
現在,當我保存上下文(NSManagedObjectContext *context;
)
NSError *error = nil;
BOOL successful = [context save:&error];
我想只保存具有真isRealEntry
的實體,否則條目將被忽略或撤消。
我該如何做到這一點?
更新:
起初,我發現馬丁的解決方案非常有前途的。不過,我得到一個非常討厭的副作用,當我保存在進入後臺我的數據:
- (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決定每個單元格的內容。因此,我需要在tableView中具有與getAllRecords相同的值,否則會崩潰。
其他建議解決方案有兩個來源之一在內存和分貝似乎也不可能,我如何提供一個TableView與兩個來源?
更新2:
我有一個尷尬的監督。從上下文中刪除記錄是不夠的。我也必須從數組中刪除它。
[allRecords removeObjectIdenticalTo:record];
因此我收回。馬丁的解決方案是完美的。但是我仍然很想知道,如果其他解決方案中提出的UITableView確實可以從兩個源(db/memory)驅動。謝謝
對不起馬丁,你警告,這引起了一些問題,我在我的更新都給予。你有關於UITableView共享兩個資源(內存/分貝)的其他想法嗎? – Houman
@Kave:看一看http://stackoverflow.com/questions/14004055/how-to-use-core-data-models-without-saving-them/14005159#14005159。這與Duncan的建議類似,但只使用一個託管對象上下文和兩個存儲:「真實」對象分配給SQLite存儲,「虛幻」對象分配給內存存儲。 –