iOS 앱에서 문서 폴더 내부에 폴더 만들기
iPhone 앱의 문서 폴더에 새 폴더를 만들고 싶습니다.
그걸 어떻게 하는지 아는 사람?
도와주셔서 감사합니다!
이 작업은 다음과 같은 방법으로 수행됩니다.
NSError *error;
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0]; // Get documents folder
NSString *dataPath = [documentsDirectory stringByAppendingPathComponent:@"/MyFolder"];
if (![[NSFileManager defaultManager] fileExistsAtPath:dataPath])
[[NSFileManager defaultManager] createDirectoryAtPath:dataPath withIntermediateDirectories:NO attributes:nil error:&error]; //Create folder
Swift 3 솔루션:
private func createImagesFolder() {
// path to documents directory
let documentDirectoryPath = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true).first
if let documentDirectoryPath = documentDirectoryPath {
// create the custom folder path
let imagesDirectoryPath = documentDirectoryPath.appending("/images")
let fileManager = FileManager.default
if !fileManager.fileExists(atPath: imagesDirectoryPath) {
do {
try fileManager.createDirectory(atPath: imagesDirectoryPath,
withIntermediateDirectories: false,
attributes: nil)
} catch {
print("Error creating images folder in documents dir: \(error)")
}
}
}
}
Manni의 대답에 대해 언급할 만큼 충분한 평판은 없지만 [paths objectAt.색인:0]은 응용프로그램의 문서 디렉토리를 가져오는 표준 방법입니다.
NS 디렉터리 검색 경로InDomains 함수는 원래 Mac OS X용으로 설계되었으며 각 디렉터리가 둘 이상 있을 수 있으며 단일 경로가 아닌 경로 배열을 반환합니다.iOS에서 결과 배열은 디렉터리에 대한 단일 경로를 포함해야 합니다.목록 3-1은 이 기능의 일반적인 사용을 보여줍니다.
목록 3-1 응용프로그램의 Documents 디렉토리 경로 가져오기
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
"[paths objectAt]가 마음에 안 듭니다.색인:0]"은 Apple이 "A", "B" 또는 "C"로 시작하는 새 폴더를 추가하는 경우, "문서"-폴더가 디렉토리의 첫 번째 폴더가 아니기 때문입니다.
향상:
NSString *dataPath = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents/MyFolder"];
if (![[NSFileManager defaultManager] fileExistsAtPath:dataPath])
[[NSFileManager defaultManager] createDirectoryAtPath:dataPath withIntermediateDirectories:NO attributes:nil error:&error]; //Create folder
Swift 2 솔루션:
let documentDirectoryPath: String = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true).first!
if !NSFileManager.defaultManager().fileExistsAtPath(documentDirectoryPath) {
do {
try NSFileManager.defaultManager().createDirectoryAtPath(documentDirectoryPath, withIntermediateDirectories: false, attributes: nil)
} catch let createDirectoryError as NSError {
print("Error with creating directory at path: \(createDirectoryError.localizedDescription)")
}
}
이건 나한테 잘 먹히지만,
NSFileManager *fm = [NSFileManager defaultManager];
NSArray *appSupportDir = [fm URLsForDirectory:NSDocumentsDirectory inDomains:NSUserDomainMask];
NSURL* dirPath = [[appSupportDir objectAtIndex:0] URLByAppendingPathComponent:@"YourFolderName"];
NSError* theError = nil; //error setting
if (![fm createDirectoryAtURL:dirPath withIntermediateDirectories:YES
attributes:nil error:&theError])
{
NSLog(@"not created");
}
스위프트 4.0
let paths = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)
// Get documents folder
let documentsDirectory: String = paths.first ?? ""
// Get your folder path
let dataPath = documentsDirectory + "/yourFolderName"
if !FileManager.default.fileExists(atPath: dataPath) {
// Creates that folder if not exists
try? FileManager.default.createDirectory(atPath: dataPath, withIntermediateDirectories: false, attributes: nil)
}
다음 코드는 디렉터리를 만드는 데 도움이 될 수 있습니다.
-(void) createDirectory : (NSString *) dirName {
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0]; // Fetch path for document directory
dataPath = (NSMutableString *)[documentsDirectory stringByAppendingPathComponent:dirName];
NSError *error;
if (![[NSFileManager defaultManager] createDirectoryAtPath:dataPath withIntermediateDirectories:NO attributes:nil error:&error]) {
NSLog(@"Couldn't create directory error: %@", error);
}
else {
NSLog(@"directory created!");
}
NSLog(@"dataPath : %@ ",dataPath); // Path of folder created
}
용도:
[self createDirectory:@"MyFolder"];
결과:
디렉터리가 생성되었습니다!
dataPath : /var/mobile/응용프로그램/BD4B5566-1F11-4723-B54C-F1D0B23CBC/문서/내 폴더
Swift 1.2 및 iOS 8
디렉토리가 존재하지 않는 경우에만 문서 디렉토리 내에 사용자 정의 디렉토리(이름 = "MyCustomData")를 작성합니다.
// path to documents directory
let documentDirectoryPath = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true).first as! String
// create the custom folder path
let myCustomDataDirectoryPath = documentDirectoryPath.stringByAppendingPathComponent("/MyCustomData")
// check if directory does not exist
if NSFileManager.defaultManager().fileExistsAtPath(myCustomDataDirectoryPath) == false {
// create the directory
var createDirectoryError: NSError? = nil
NSFileManager.defaultManager().createDirectoryAtPath(myCustomDataDirectoryPath, withIntermediateDirectories: false, attributes: nil, error: &createDirectoryError)
// handle the error, you may call an exception
if createDirectoryError != nil {
println("Handle directory creation error...")
}
}
언급URL : https://stackoverflow.com/questions/1762836/create-a-folder-inside-documents-folder-in-ios-apps
'programing' 카테고리의 다른 글
| 두 개의 어레이를 동시에 반복하는 'Ruby way'는 무엇입니까? (0) | 2023.06.03 |
|---|---|
| ViewController가 Modal로 표시되는지 여부를 확인할 수 있습니까? (0) | 2023.06.03 |
| Spnet 코어에서 Excel로 내보내기 (0) | 2023.06.03 |
| iPhone Core 데이터를 웹 서버와 동기화한 다음 다른 장치로 푸시하는 방법은 무엇입니까? (0) | 2023.06.03 |
| SQL Server 데이터베이스 복원 오류: 지정한 캐스트가 잘못되었습니다. (SqlManager)UI) (0) | 2023.05.29 |