3

给定一个名为 ExampleApp 的应用程序,我想基本上不使用硬编码路径来查找“~/Library/Logs/ExampleApp”。存在 NSSearchPathForDirectoriesInDomains,您可以使用 NSApplicationSupportDirectory 搜索词来查找诸如“~/Library/Application Support/ExampleApp”之类的内容,但似乎没有用于日志记录的搜索词。

我不认为 ~/Library/Logs 是非标准的,因为 CrashReporter 将其日志放在那里。

4

2 回答 2

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];
于 2012-04-10T03:35:47.853 回答
1

Cocoa 没有提供查找所有标准目录的方法。旧FSFindFolder()功能可以提供更多功能,但确实涉及从 FSRef 转换回路径或 URL。Apple 不鼓励使用它,但它仍然是获得某些标准目录而无需硬编码的唯一方法。也就是说,它永远不会包含您的应用名称。你必须附加它。

编辑添加:旧文档的链接

于 2012-04-10T03:55:27.917 回答