macos - NSOutlineView 编译错误 : Semantic Issue 'moveRowAtIndex:toIndex:' is unavailable

标签 macos cocoa nstableview nsoutlineview

当我尝试编译以下代码时,

[self.outlineView beginUpdates];
[self.outlineView moveRowAtIndex:row toIndex:targetRow];
[self.outlineView endUpdates];

我收到以下编译器错误:

语义问题“moveRowAtIndex:toIndex:”不可用

除此之外,NSOutlineView 上的所有其他操作均有效。

值得注意的一件事是,当 XCode 自动完成时,它会在其顶部显示一条红线,就好像它已被弃用,但文档说它是有效的。

我的项目是针对 OSX 10.8 构建的,文档表明该项目适用于 OSX 10.7 及更高版本。

http://developer.apple.com/library/mac/#releasenotes/General/MacOSXLionAPIDiffs/AppKit.html

https://developer.apple.com/library/mac/#documentation/Cocoa/Reference/ApplicationKit/Classes/NSTableView_Class/Reference/Reference.html#//apple_ref/occ/cl/NSTableView

我在网上没有找到任何可以为我提供解决方案的内容,我想知道是否有人对如何使其发挥作用有任何想法。

最佳答案

-moveRowAtIndex:toIndex:NSTableView 中声明和定义。请注意NSOutlineView继承自NSTableView但是,由于其分层性质,一些 NSTableView方法不可用,这就是您收到编译器错误的原因。

您应该使用-moveItemAtIndex:inParent:toIndex:inParent:相反。

不幸的是,文档尚未反射(reflect)这一点。浏览头文件通常很有用,因为它们在声明方面更准确,并且在文档方面往往是最新的。如果你打开 NSOutlineView.h,你会注意到 -moveItemAtIndex:toIndex:声明为 UNAVAILABLE_ATTRIBUTE ,对应于 __attribute__((unavailable)) .

关于macos - NSOutlineView 编译错误 : Semantic Issue 'moveRowAtIndex:toIndex:' is unavailable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17055231/

相关文章:

java - 如何了解在 Mac 上双击 .jar 文件时会发生什么情况?

qt - 如何将 QML View 嵌入 native 窗口

macos - 如何设置 NSTableView 中显示为行的 View 的宽度?

php - SublimeLinter-php 或 SublimeLinter-phplint

objective-c - NSButton 失败时的等效键

xcode - 无法在 OSX 10.8 以下设置部署目标(错误 : dyld: Library not loaded -- Reason: Incompatible library version)

objective-c - 如何将 NSTimeInterval 对象传递给 detachNewThreadSelector withObject 参数?

cocoa - 在 Cocoa/C++ 中使用相对路径加载资源

swift - 如何在 Swift 中保存和恢复 NSScrollView 滚动位置?

objective-c - NSTableView/NSOutlineView 顶部和底部淡入淡出效果