我的cocoa应用程序中的列表下方有一个加号和减号按钮。按加号按钮打开文件选择器对话框,选择文件/文件夹并按其中的确定将文件对话框返回的URL添加到列表中。这种方法效果很好,但用户不是很友好。例如,如果我在主目录中选择一个文件夹,我会得到一个这样的URL:
file://localhost/Users/tristan/fighterjets
而不是那些存储在NSTableView隐藏字段中的“丑陋”网址,我可以获得更加用户友好的内容,例如/Users/tristan/fighterjets
吗?
或者,如果可能,甚至可以在Time Machine偏好设置中选择要排除的文件 - 带有图标的文件路径。我想这可能需要med在路径之前的第二列,并以某种方式从系统中获取图标。我也很想知道那个。
答案 0 :(得分:2)
您根本不应该显示路径。这不被认为是用户友好的...首先,根据用户在系统偏好设置中的语言环境,文件名可能不是Finder中显示的内容。例如,Terminal.app成为日语中的ターミナル.app。您应该始终使用-[NSFileManager displayNameAtPath:]
。
按文件名对文件进行排序应使用-[NSString localizedStandardCompare:]
完成。
可以通过-[NSWorkspace iconForFile:]
获取与文件关联的图标。
如果你显示一个极客的路径,或者像时间机器那样令人讨厌的用户界面,以便你可以让用户知道~/
的含义,那就用
NSURL*fileURL= ... you get a file:// URL somehow ...
NSString* path=[fileURL path]; // extract the file system path
NSString* abbreviatedPath=[path stringByAbbreviatingWithTildeInPath]; // this converts /User/user to ~
了解更多信息,请参阅this reference。
事实上,Cocoa有一个预构建的UI元素,用于显示名为NSPathControl
的this路径,看起来像{{3}}。所以我建议你使用它。