cocoa - 双击保存的文件启动应用程序 文件名的路径奇怪

  显示原文与译文双语对照的内容
0 0

我正在使用委托函数 -(BOOL)application:(NSApplication *)theApplication openFile:(NSString *)fileName; 双击应用程序本身以前保存的文件来启动我的应用程序。

我的主要问题是文件的路径。 如果双击 fileName 变量中的某个文件,我将得到以下路径:


/Users/Mark/Library/Containers/com.Mark.myApp/Data/Desktop/theFile.ff

当我在等一些东西


/Users/Mark/Desktop/theFile.ff

这就是我使用 NSOpenPanel的方法

如何管理该路径?

Edit-------

当我尝试使用以下方法取消对文件内容的压缩时

[NSKeyedUnarchiver unarchiveObjectWithData:[NSData dataWithContentsOfURL: filename]];

我得到了错误 -[NSKeyedUnarchiver initForReadingWithData:]: data is NULL

但是当我使用NSOpenPanel读取相同的文件时,它。

编辑添加源 ------------

这是我用来管理应用程序启动的代码,通过双击文件来管理应用程序。


-(BOOL)application:(NSApplication *)theApplication openFile:(NSString *)fileName{
 self.openFile = [NSURL URLWithString:fileName];
}

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
{
 if (self.openedFile!= nil) { 
 id obj = [NSKeyedUnarchiver unarchiveObjectWithData:[NSData dataWithContentsOfURL:filename]];
 - do something with the obj -
 }

}

时间: 原作者:

0 0

问题是什么它们都指向同一个文件。 第一个是沙箱表示( 使用符号链接使应用程序可以访问桌面而不会破坏沙箱) 。

编辑:在代码中使用 URLWithString,实际上应该使用 fileURLWithPath 。
字符串不是 URL,而是一个使用fileURLWithPath转换为URL的POSIX路径

原作者:
...