gpt4 book ai didi

cocoa - NSArrayController 初始化

转载 作者:行者123 更新时间:2023-12-03 16:06:10 28 4
gpt4 key购买 nike

我无法让核心数据支持的 NSArrayController 在我的代码中正常工作。下面是我的代码:

pageArrayController = [[NSArrayController alloc] initWithContent:nil];
[pageArrayController setManagedObjectContext:[self managedObjectContext]];
[pageArrayController setEntityName:@"Page"];
[pageArrayController setAvoidsEmptySelection:YES];
[pageArrayController setPreservesSelection:YES];
[pageArrayController setSelectsInsertedObjects:YES];
[pageArrayController setClearsFilterPredicateOnInsertion:YES];
[pageArrayController setEditable:YES];
[pageArrayController setAutomaticallyPreparesContent:YES];
[pageArrayController setSortDescriptors:[NSArray arrayWithObject:[NSSortDescriptor sortDescriptorWithKey:@"index" ascending:YES]]];
BOOL result = [pageArrayController setSelectionIndex:0];

当我尝试调用 setSelectionIndex: 时,它返回 YES,表明选择已成功更改。但是,对 pageArrayController 对象的任何后续 getSelectionIndex 调用都会返回 NSNotFound。

我不明白的是,如果我将 NSArrayController 放入 NIB 中,并允许 NIB 文件执行初始化(在 Interface Builder 中具有所有相同的属性),则 NSArrayController 可以正常工作。

为什么会有行为上的差异? NIB 文件是否以特殊方式初始化这些类型的对象?我的 NSArrayController 初始化不正确吗?

感谢任何帮助。谢谢。

最佳答案

是的,nib 确实以一种特殊的方式初始化对象,有时很难弄清楚如何复制它。我也遇到过这个问题,最后在Apple的Core Data编程指南>> Core Data和Cooca Bindings >> Automatically Prepares Content Flag中找到了答案。 (感谢 Cocoa Dev 列表中的 Dave Fernandes)。答案是,如果你用 nil 内容初始化一个 arraycontroller,你也需要执行 fetch。

BOOL result;
NSArrayController *pageArrayController = [[NSArrayController alloc] initWithContent:nil];
[pageArrayController setManagedObjectContext:[self managedObjectContext]];
[pageArrayController setEntityName:@"Page"];
NSError *error;
if ([pageArrayController fetchWithRequest:nil merge:YES error:&error] == NO)
result = NO;
else
{
//do all that other pageArrayController configuration stuff
result = [pageArrayController setSelectionIndex:0];
}

顺便说一句,[NSSortDescriptor sortDescriptorWithKey:@"index"ascending:YES]] 发出警告。

关于cocoa - NSArrayController 初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1860805/

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