我有一個UItableView,我在其中顯示項目列表。您可以選擇和取消選擇這個項目列表。CoreData對象不會被刪除
當用戶選擇從tableview中的項目,然後我再補充一點字典我coredata當用戶取消選擇從tableview中的項目,然後我刪除我的coredata該字典
。
每一件事情在這方面工作正常,因爲我在每次選擇和取消選擇日誌coredata對象,所以我可以看到有1 2或3項depeneing如果我選擇了他們,然後如果我取消選擇說第3項它只記錄1和2.
所以我知道這些功能工作正常。現在接下來我已經實現了哪些是錯誤的是當tableview顯示時,我檢查是否有任何來自我的coredata的項目,然後當我找到與當前單元格有關的項目時,我添加了一個配件勾號。這是爲了顯示已經將哪些值保存到核心數據。
現在奇怪的是,以前我從coredata中刪除了第3項,並通過讀取coredata值並確認只有1 & 2存在。然後重新構建應用程序以檢查並確保該功能正常工作,在視圖加載時分配滴答。一旦視圖加載項目1 2和3都被再次選中.....即使3不應該。
我不知道我做錯了,但是這是我的coredata刪除功能多數民衆贊成呼籲取消
// Deleting values/tables from coredata entity
- (void)deleteSingleObject:(NSString *)entityDescription Dictionary:(NSDictionary *)dictionary {
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:entityDescription inManagedObjectContext:__managedObjectContext];
[fetchRequest setEntity:entity];
NSString *projectIDString = [dictionary objectForKey:@"ProjectID"];
NSPredicate *p=[NSPredicate predicateWithFormat:@"projectID == %@",projectIDString];
[fetchRequest setPredicate:p];
NSError *error;
NSArray *items = [__managedObjectContext executeFetchRequest:fetchRequest error:&error];
for (NSManagedObject *product in items) {
[__managedObjectContext deleteObject:product];
}
}
,這是我怎麼分配蜱當視圖加載
// check if cell needs accessorytick
for (int i = 0; i < [projectListReadFromCoreDataMutableArray count]; i++) {
NSDictionary *tempReadCoreDataDictionary = [projectListReadFromCoreDataMutableArray objectAtIndex:i];
if ([[tempReadCoreDataDictionary objectForKey:@"ProjectID"] isEqualToString:[projectDictionary objectForKey:@"ProjectID"]]) {
projectListCustomCell.accessoryType = UITableViewCellAccessoryCheckmark;
}
}
任何幫助將不勝感激。 如果你需要更多的信息或代碼讓我知道,但這些是我認爲這是不工作的原因的兩個核心部分。
哦..人這個工作完美。我在前面的某個地方查看了代碼,但是因爲我認爲這只是爲了捕獲錯誤.. whoopsie ..感謝您的幫助,它完美運行。一旦時間到了,我會接受你的回答:) – HurkNburkS
@HurkNburkS我很高興你解決了這個問題。無論如何,你應該繼續閱讀我鏈接的文檔,以更好地理解Core Data的結構。 –