我使用此代码告诉我的第二个班级将文件保存到给定路径:
if ([defaults boolForKey:@"SaveAutomatically"]) {
basepath = [defaults objectForKey:@"SaveAutomaticallyPath"];
basepath = [basepath stringByAppendingPathComponent:[defaults objectForKey:@"SaveAutomaticallyName"]];
}
[NSThread detachNewThreadSelector:@selector(saveTo:) toTarget:controller withObject:basepath];
因此,该saveTo:
方法被调用。它首先检查给定的路径是否正常
if (![[[aPath pathExtension] lowercaseString] isEqualToString:@"icns"]) {
aPath = [aPath stringByAppendingPathExtension:@"icns"];
}
if ([[NSFileManager defaultManager] fileExistsAtPath:aPath]) {
[delegate error:@"File exists already."];
[self performSelectorOnMainThread:@selector(fs)
withObject:nil waitUntilDone:NO];
}
然后它做一些事情并创建一个CGImageDestinationRef
:
NSURL *fileURL = [NSURL fileURLWithPath:aPath];
CGImageDestinationRef dr = CGImageDestinationCreateWithURL((CFURLRef)fileURL, kUTTypeAppleICNS , count, NULL);
if (!dr) {
[delegate error:@"Unable to save icon file."];
[self performSelectorOnMainThread:@selector(fs)
withObject:nil waitUntilDone:NO];
return;
}
dr
每次都是零。如果我saveTo
使用 a 给 a 路径,NSSavePanel
它不会抱怨并且工作正常。我尝试登录路径,saveTo:
但效果很好(例如/Users/Home/Desktop/Result.icns)。
换句话说,当上面的代码保存到/Users/Home/Desktop/Result.icns时它会失败,但是当我让用户决定使用 保存到同一路径NSSavePanel
时,没有问题。
我正在使用沙盒。我该如何解决这个问题?