Jac*_*mes 56 cocoa objective-c ios swift
我正在尝试为用户的Application Support文件夹获取NSString.
我知道我能做到,NSString *path = @"~/Library/Application Support";
但这似乎并不优雅.我已经玩过使用NSSearchPathForDirectoriesInDomains
但它看起来很啰嗦并创建了几个不必要的对象(至少,我的实现).
有一个简单的方法吗?
zap*_*aph 70
这已经过时了,目前的最佳实践使用方法FileManager.default.urls(for:in:)
与下面@ andyvn22的评论一样.
最好的做法是使用NSSearchPathForDirectoriesInDomains
与NSApplicationSupportDirectory
"长气",因为它可能.
例:
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSApplicationSupportDirectory, NSUserDomainMask, YES);
NSString *applicationSupportDirectory = [paths firstObject];
NSLog(@"applicationSupportDirectory: '%@'", applicationSupportDirectory);
Run Code Online (Sandbox Code Playgroud)
NSLog输出:
applicationSupportDirectory: '/Volumes/User/me/Library/Application Support'
Run Code Online (Sandbox Code Playgroud)
Jua*_*ero 33
斯威夫特4:
print(NSHomeDirectory())
Run Code Online (Sandbox Code Playgroud)
要么
print(FileManager.default.urls(for: .applicationSupportDirectory, in: .userDomainMask).first)
Run Code Online (Sandbox Code Playgroud)
和
let yourString = String(FileManager.default.urls(for: .applicationSupportDirectory, in: .userDomainMask).first)
Run Code Online (Sandbox Code Playgroud)
And*_*Ley 21
斯威夫特3:
FileManager.default.urls(for: .applicationSupportDirectory, in: .userDomainMask).first
Run Code Online (Sandbox Code Playgroud)
只是为了确保人们会开始使用推荐的方式:
- (NSArray<NSURL *> * _Nonnull)URLsForDirectory:(NSSearchPathDirectory)directory
inDomains:(NSSearchPathDomainMask)domainMask
Run Code Online (Sandbox Code Playgroud)
文档中的扩展示例:
- (NSURL*)applicationDataDirectory {
NSFileManager* sharedFM = [NSFileManager defaultManager];
NSArray* possibleURLs = [sharedFM URLsForDirectory:NSApplicationSupportDirectory
inDomains:NSUserDomainMask];
NSURL* appSupportDir = nil;
NSURL* appDirectory = nil;
if ([possibleURLs count] >= 1) {
// Use the first directory (if multiple are returned)
appSupportDir = [possibleURLs objectAtIndex:0];
}
// If a valid app support directory exists, add the
// app's bundle ID to it to specify the final directory.
if (appSupportDir) {
NSString* appBundleID = [[NSBundle mainBundle] bundleIdentifier];
appDirectory = [appSupportDir URLByAppendingPathComponent:appBundleID];
}
return appDirectory;
}
Run Code Online (Sandbox Code Playgroud)
证明链接:https://developer.apple.com/library/ios/documentation/FileManagement/Conceptual/FileSystemProgrammingGuide/AccessingFilesandDirectories/AccessingFilesandDirectories.html#//apple_ref/doc/uid/TP40010672-CH3-SW3
归档时间: |
|
查看次数: |
30786 次 |
最近记录: |