我有一些對象是圖像與對象用戶mani對一個像這樣的圖像< < --->用戶。現在我想做的事情,當用戶登錄我顯示一個按鈕,每一個圖片添加到收藏夾,當我點擊這個按鈕,運行此代碼:核心數據如何更新記錄?
User * user = [[UserController sharedInstance] currentUser];
Image * image = (Image*)[user.managedObjectContext objectWithID:[self.yacht objectID]];
yacht.whoLiked = user
問題不是我相同的控制器,但在之前,因爲我所做的是加載圖像的拇指集合視圖(並在此控制器加載數據庫中的所有數據),然後當我按下拇指我去另一個控制器,顯示我的大圖像和添加收藏夾的按鈕,當我按下它,然後回到舊控制器的舊控制器的viewDidAppear我重新加載每次數據從數據庫但我看不到任何變化,如果我改變部分(控制器),我回來看看我看到的數據更新
我這是怎麼調用數據庫從主控制器:
- (void)fetchImages
{
NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:@"Image"];
request.predicate = [NSPredicate predicateWithFormat:@"ANY whichCategories.name =[cd] %@", self.category.name];
NSSortDescriptor *sortName = [[NSSortDescriptor alloc] initWithKey:@"headline" ascending:YES selector:@selector(localizedCaseInsensitiveCompare:)];
request.sortDescriptors = [NSArray arrayWithObject:sortName];
NSError * error = nil;
self.images = [self.database.managedObjectContext executeFetchRequest:request error:&error];
[self.collectionView reloadData];
}
- (void)useDocument
{
if (![[NSFileManager defaultManager] fileExistsAtPath:[self.database.fileURL path]]) {
// CREATE
[self.database saveToURL:self.database.fileURL forSaveOperation:UIDocumentSaveForCreating completionHandler:^(BOOL success) {
[self fetchImages];
}];
} else if (self.database.documentState == UIDocumentStateClosed) {
// OPEN
[self.database openWithCompletionHandler:^(BOOL success) {
[self fetchImages];
}];
} else if (self.database.documentState == UIDocumentStateNormal) {
// USE
[self fetchImages];
}
}
- (void)setDatabase:(UIManagedDocument *)database
{
if (_database != database) {
_database = database;
[self useDocument];
}
}
-(void)viewDidAppear:(BOOL)animated{
[super viewDidAppear:animated];
[self useDocument];
//[self.collectionView reloadData];
[UIView beginAnimations:@"" context:nil];
[UIView setAnimationDuration:0.5];
self.collectionView.alpha = 1;
[UIView commitAnimations];
}
爲什麼,如果我回來,並返回代碼工作否則就像是我沒有要求刷新陣列的服務器?
我不得不使用它,然後我的代碼? –
是的,您需要始終保存您的更改。您可以在每次更改後保存更改,但我不建議您這樣做。我建議在離開視圖控制器之前保存上下文。 – Alex
讓我們來看看我需要2分鐘 –