Objective c 如何在基于OSX的文档应用程序中导出包文件?
在我的应用程序中,我想加载用户选择的某些图像,进行一些修改,然后以我自己的文件格式保存副本。因为我想跟踪用户修改,所以我决定将文件导出为包(bundle) 因此,在我的文档类中,有一个保存图像文件的Objective c 如何在基于OSX的文档应用程序中导出包文件?,objective-c,xcode,macos,Objective C,Xcode,Macos,在我的应用程序中,我想加载用户选择的某些图像,进行一些修改,然后以我自己的文件格式保存副本。因为我想跟踪用户修改,所以我决定将文件导出为包(bundle) 因此,在我的文档类中,有一个保存图像文件的NSImage对象。在fileWrapperOfType:error:方法中,我设置了一个NSFileWrapper对象,并将该对象放入其中。代码如下: NSDictionary *fileWrappers = [self.documentFileWrapper fileWrappers]; if (
NSImage
对象。在fileWrapperOfType:error:
方法中,我设置了一个NSFileWrapper
对象,并将该对象放入其中。代码如下:
NSDictionary *fileWrappers = [self.documentFileWrapper fileWrappers];
if (image != nil) {
NSBitmapImageRep *imageRep = [image bitmapImageRepresentation];
NSData *imageData = [imageRep representationUsingType:NSPNGFileType properties:nil];
NSFileWrapper *imageFileWrapper = [[NSFileWrapper alloc]
initRegularFileWithContents:imageData];
[imageFileWrapper setPreferredFilename:@"image"];
[[self documentFileWrapper] addFileWrapper:imageFileWrapper];
}
return self.documentFileWrapper;
在我的项目plist文件中,我有两种文档类型,第一种是public.image
类型,因为我需要在我的应用程序中加载图像:
另一个是我自己的文档类型。为了使文件成为包,我选中了xcode中的bundle复选框:
如果我现在简单地运行它,那么代码compains从类型标识符中查找扩展是不推荐的,因此,我设法在导出的UTI中添加了一个条目:
此刻,一切似乎都在运行,除了输出的带有
mdc
扩展名的文件夹
实际上是一个文件夹而不是一个包,我在这里缺少什么?提前谢谢 要使OS X上的包成为pkg,它必须具有扩展名.pkg。我希望这就像接错分机一样简单
注意:直到最近,.pkg文件还只是目录。现在,我们经常看到package.pkg包被隐藏,如果没有一些技巧,例如使用Pacifist、pkgutil或xar,就无法随意浏览:
pkgutil--解压缩file.pkg文件夹/
或
xar-xf file.pkg最后我解决了这个问题,这里的关键是将
符合
字段改为com.apple.package我将“Comforms设置为”作为com.apple.package
,但它也作为文件夹而不是包输出。我不知道为什么?我使用的是Swift 2.0和Xcode 7.3。在添加了像您这样的图像文档类型之后,它就开始工作了。我不知道为什么。