鉴于一个名为ExampleApp的应用程序,我想基本上不使用硬编码路径找到“〜/ Library / Logs / ExampleApp”。存在NSSearchPathForDirectoriesInDomains,您可以使用NSApplicationSupportDirectory搜索词来查找“〜/ Library / Application Support / ExampleApp”之类的内容,但似乎没有用于记录的搜索词。
我不认为〜/ Library / Logs是非标准的,因为CrashReporter将其日志放在那里。
答案 0 :(得分:4)
试试这个:
NSString* libraryPath = [NSHomeDirectory stringByAppendingPathComponent:@"Library/Logs"];
更新(〜/ Library / Logs / AppName):
NSString* bundleName = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleName"];
NSString* logsPath = [NSString stringWithFormat:@"Library/Logs/%@",bundleName];
NSString* libraryPath = [NSHomeDirectory stringByAppendingPathComponent:logsPath];
答案 1 :(得分:1)
Cocoa没有提供查找所有标准目录的方法。旧的FSFindFolder()
函数可以提供更多功能,但确实涉及从FSRef转换回路径或URL。 Apple不鼓励使用它,但它仍然是获得某些标准目录而无需硬编码的唯一方法。也就是说,它不会包含您的应用名称。你必须追加它。
编辑添加:link to the legacy docs。