2013-03-01 3 views
0

Мне, должно быть, не хватает чего-то очевидного здесь, но я не могу найти ответ. В основном, у меня был код, который написал файл в каталоге документов приложения. Этот код выглядитЗапись в каталог в каталоге документов приложения

- (NSString *)applicationDocumentsDirectory { 
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
    NSString *documentsDirectory = [paths objectAtIndex:0]; 
    return documentsDirectory; 
} 

// Действительное написания кода в другом методе

NSString *manifestPath = @"manifest.txt"; 
[manifestData writeToFile:manifestPath options:NSDataWritingAtomic error:&error]; 

Так это работает отлично. Теперь я хочу создать новую папку в каталоге документов и записать в эту папку. Поэтому для создания моей новой папки я делаю:

NSFileManager *fileManager = [NSFileManager defaultManager]; 

BOOL isDir; 
NSString *directoryPath = [[self applicationDocumentsDirectory] stringByAppendingPathComponent:@"testDir"]; 
NSError *error = nil; 
if (![fileManager fileExistsAtPath:directoryPath isDirectory:&isDir]) { 
    if (!isDir) { 
     [fileManager createDirectoryAtPath:directoryPath withIntermediateDirectories:NO attributes:nil error:&error]; 
    } 
} 

Эта часть работает нормально.

Часть, которая не работает, - это когда я хочу создать свой новый манифест, чтобы перейти в этот каталог и записать в этот каталог. Я попытался

NSString *manifestPath = [[[self applicationDocumentsDirectory] stringByAppendingPathComponent:directoryPath] stringByAppendingPathComponent:@"manifest.txt"]]; 

или

NSString *manifestPath = [[self applicationDocumentsDirectory] stringByAppendingPathComponent:[NSString stringWithFormat:@"%@/manifest.txt", directoryPath]; 

Я пропускаю что-то с тем, как пути, или каталогов работы? Я продолжаю получать ошибку Cocoa 4. Когда я распечатываю путь, мой путь тоже выглядит правильным. (каталог симулятора iOS/testDir/manifest.txt)

Я что-то пропустил? Благодарю.

ответ

1

Похоже, вы продолжаете добавлять путь к каталогу документов к себе. В вашем примере directoryPath уже имеет путь к каталогу документов. Просто сделайте [directoryPath stringByAppendingPathComponent:@"manifest.txt"].

Смежные вопросы