gpt4 book ai didi

macos - 对持有 NSDictionary 的 NSMutableArray 进行符合 KVC 的更新

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

我的问题在于更新一个包含不同数量的 NSDictionary 的 NSMutableArray。每个 NSDictionary 有 6 个键,根据用户在 TableView 中选择的记录从数据库中检索这些键。该数组链接到 NSArrayController,它允许用户选择字典并查看内容。

如果字典的数量改变,则 arrayController 更新 View ;没问题。然而,如果 TableView 中的选择之间的字典计数相同,则 arrayController 不会更新 View ,但模型会更新。

arrayController 在 IB 中绑定(bind)到模型数组,每当 TableView 中的选择发生变化时,模型数组就会更新。

使用:

[self.selectedJobNotes addObject:[self.jobNotes objectAtIndex:i]];

这不符合 KVC 标准。

但是使用(我相信它符合 KVC 标准):

[[self.selectedJobNotes objectAtIndex:noteCount] setValue:[[self.jobNotes objectAtIndex:i]valueForKey:@“Content"] forKeyPath:@"Content"];

也不起作用。

有什么方法可以告诉ArrayController这是一个新数组/有新鲜内容,所以重新加载。

[self.jobNotesArrayController fetch:self.a2gDataObject.selectedJobNotes];

好像也不起作用?!

最佳答案

解决此问题的最佳方法是实现(和使用)索引访问器。在你的情况下,它们看起来像

- (void)insertObject:(NSDictionary *)dict inSelectedJobNotesAtIndex:(NSUInteger) index {
[self.selectedJobNotes addObject:[self.jobNotes objectAtIndex:index]];
}


- (void)insertSelectedJobNotes:(NSArray *)notesArray atIndexes:(NSIndexSet *)indexSet {
[self.selectedJobNotes insertObjects:notesArray atIndexes:indexSet];
}

请参阅 KVC 编程指南:Mutable Indexed AccessorsEnsuring KVC Compliance .

您还可以将更新包装在 willChange/didChange ValueForKey: 中,但实现索引访问器可以一劳永逸地解决这个问题。

关于macos - 对持有 NSDictionary 的 NSMutableArray 进行符合 KVC 的更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15524676/

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