我无法让支持核心数据的 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 的初始化不正确吗?
任何帮助表示赞赏。谢谢。