我正在使用委托功能-(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
我该如何管理这条路径?
编辑 - - -
当我尝试使用取消归档文件的内容时
[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 -
}
}