macOS App 保存数据

1. 保存文本数据问题

Mac端的App,需要保存一些文本数据,尝试了几种方式,记录一下曲折。

  1. 保存到本 App 目录下,升级时可能会丢失数据。直接覆盖原App方式。无法测试升级方式,所以不是很确定。
  2. 保存到 Documents (文稿)目录下,可以保证升级问题,但是容易被用户删除或修改掉。
  3. 保存到 Application Support,必须要是完整的文件路径。

比如完整路径是 /Users/zzz/Library/Application Support 而不是 ~/Library/Application Support

最初是准备保存到 Application Support 文件夹中的,但刚开始取到的路径是 ~/Library/Application Support 这样的,结果就是无法创建文件夹,Console 提示 You don't have premission to save file in this folder 后来上网查询,几经曲折,才发现这个不是完整路径。

取得完整路径有以下方式,可能有更多,暂时只找到这三种。

  1. NSSearchPathForDirectoriesInDomains 最后一个参数,表示是否展开完整路径,传YES,得到的文件路径就是完整的。
NSArray *arr = NSSearchPathForDirectoriesInDomains(NSApplicationSupportDirectory, NSUserDomainMask, YES);
  1. 用 stringByExpandingTildeInPath 方法来展开不完整路径,也可以得到完整路径。如果不确定得到的文件路径是否完整,可以用 stringByExpandingTildeInPath 这个方法再展开一次。
NSArray *arr = NSSearchPathForDirectoriesInDomains(NSApplicationSupportDirectory, NSUserDomainMask, NO);
if (arr && arr.count > 0) {
    return [arr.firstObject stringByExpandingTildeInPath];
} 
  1. NSFileManager 取到的路径也是完整的
NSFileManager *fileMan = [NSFileManager defaultManager];
NSArray *urls = [fileMan URLsForDirectory:NSApplicationSupportDirectory inDomains:NSUserDomainMask];  

2. 保存 NSImage 到文件

- (NSString *)saveImage:(NSImage *)image 
{    
    [image lockFocus];
    NSBitmapImageRep *bits = [[[NSBitmapImageRep alloc] initWithFocusedViewRect:NSMakeRect(0, 0, size.width, size.height)] autorelease];    
    [image unlockFocus];
    
    NSDictionary *imageProps = [NSDictionary dictionaryWithObject:[NSNumber numberWithFloat:0.9] forKey:NSImageCompressionFactor];
    
    NSData *imageData = [bits representationUsingType:NSJPEGFileType properties:imageProps];
    [imageData writeToFile:appFile atomically:YES];
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,104评论 25 708
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,881评论 18 139
  • 覆辙韶光数几度春秋 纵观群书慕圣贤风流 篆墨行文若仙灵佐佑 巧笔漫有惊雷脍炙人口 未觉流年分寒暑夜昼 红尘沧桑若白...
    觉智师兄阅读 1,882评论 0 0
  • 我今年24岁,我总是在想,如果我真的那么『不普通、不平凡』,我应该早就在什么方面露出端倪了。 写博客和日记十多年了...
    镇雷阅读 1,280评论 9 21