
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初始化是不正确的?
任何帮助表示赞赏.谢谢.
解决方法 是的,nibs以特殊的方式初始化对象,有时很难弄清楚如何复制它.我也在努力解决这个问题,最后在Apple的核心数据编程指南中找到答案>>核心数据和Cooca绑定>> Automatically Prepares Content Flag(感谢Dave Fernandes在 Cocoa Dev名单上).答案是,如果使用nil内容初始化arraycontroller,则还需要执行提取.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];} BTW,[NSSortDescriptor sortDescriptorWithKey:@“index”升序:是]]发出警告.
总结以上是内存溢出为你收集整理的cocoa – NSArrayController初始化全部内容,希望文章能够帮你解决cocoa – NSArrayController初始化所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)