gpt4 book ai didi

objective-c - NSOutlineView 的自动保存扩展项不起作用

转载 作者:太空狗 更新时间:2023-10-30 03:37:43 26 4
gpt4 key购买 nike

我正在尝试使用“自动保存展开的项目”功能。当我展开一个包含其子项的组并重新启动应用程序时,所有子项都会再次折叠,我不知道为什么它们不会保持展开状态。我正在使用核心数据来存储我的源列表项。

这是我到目前为止所做/设置的:

  • 在 NSOutlineView(源列表)中选中“自动保存展开的项目”
  • 为“自动保存”设置一个名称
  • 分配给我的 Controller 的数据源和委托(delegate)导出

这是我对 outlineView:persistentObjectForItem 和 outlineView:itemForPersistentObject 的实现。

- (id)outlineView:(NSOutlineView *)anOutlineView itemForPersistentObject:(id)object
{
NSURL *objectURI = [[NSURL alloc] initWithString:(NSString *)object];
NSManagedObjectID *mObjectID = [_persistentStoreCoordinator managedObjectIDForURIRepresentation:objectURI];
NSManagedObject *item = [_managedObjectContext existingObjectWithID:mObjectID error:nil];
return item;
}

- (id)outlineView:(NSOutlineView *)anOutlineView persistentObjectForItem:(id)item
{
NSManagedObject *object = [item representedObject];
NSManagedObjectID *objectID = [object objectID];
return [[objectID URIRepresentation] absoluteString];
}

有什么想法吗?谢谢。

编辑:我有线索了!问题可能是树 Controller 没有按时准备好它的内容。 applicationDidFinishLaunching、outlineView:persistentObjectForItem 等方法在数据加载之前执行,或者说 NSOutlineView 尚未完成初始化。有什么解决办法吗?

最佳答案

我遇到了一个问题,我的 -outlineView:itemForPersistentObject: 实现根本没有被调用。事实证明,当设置“autosaveExpandedItems”或“autosaveName”时会调用此方法。我的解决方案是在代码中而不是在 InterfaceBuilder 中设置这两个属性。当我在分配委托(delegate)后设置属性时,将调用该方法。

关于objective-c - NSOutlineView 的自动保存扩展项不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25789554/

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