gpt4 book ai didi

ios - 如果关系链中对象的属性发生更改,如何通知 NSFetchRequestController

转载 作者:行者123 更新时间:2023-12-01 16:41:50 24 4
gpt4 key购买 nike

enter image description here

考虑上面的模型,我在 Items 上有一个 FRC (NSFetchRequestController)。如果 Person 更改,我希望 FRC 更新 View 。

我知道我可以观察 NSManagedObjectContextObjectsDidChangeNotification 的变化,但这看起来并不直观。

我在想调用 willChangeValueForKey 和 didChangeValueForKey 可以解决问题,但它没有按预期工作。

            Person *person = [NSEntityDescription
insertNewObjectForEntityForName:@"Person"
inManagedObjectContext:temporaryContext];

person.name= [msg objectForKey:@"name"];


// [?? willChangeValueForKey:@"friendPhoneNumber"];
// [?? didChangeValueForKey:@"friendPhoneNumber"];

// Save the context.
NSError *error = nil;

if (![temporaryContext save:&error]) {
NSLog(@"Error in Saving MOC: %@",[error description]);
}

[managedObjectContext performBlock:^{
// Save the context.
NSError *error = nil;
if (![managedObjectContext save:&error]) {
DLog(@"Error in Saving MOC: %@",[error description]);
}

[writerObjectContext performBlock:^{
// Save the context.
NSError *error = nil;
if (![writerObjectContext save:&error]) {
DLog(@"Error in Saving MOC: %@",[error description]);
}else{
[writerObjectContext refreshObject:changedObjectId mergeChanges:YES];
}

}]; // writer
}]; // main
}]; // parent

最佳答案

I wanted to notify FRC on items that person has been modified, but it didnt worked as expected. FRC doesnt register any change.



一个 NSFetchedController仅为与之关联的实体注册更改。如您所述,即 Item实体。如果一个 Person更改,获取的 Controller 将不会响应更改。

如果要响应更改,则需要手动执行。示例说明见 NSFetchedResultsController pitfall .

一个简单的问题,为什么这些项目应该随着人的修改而改变?也许你应该执行一个新的请求……只是假设。

关于ios - 如果关系链中对象的属性发生更改,如何通知 NSFetchRequestController,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23627308/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com