#objective-c #cocoa #xcode #ios4 #xcode4
#objective-c #cocoa #xcode #ios4 #xcode4
Вопрос:
У меня проблема с NSFileManager, потому что я могу сохранить файл только в каталоге документов приложения, но я хочу создать файл в подкаталоге, который, не знаю почему, я не смог создать. мой код ниже:
(NSString *)applicationDocumentsDirectory {
return [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];
}
(BOOL)storeFile:(NSData*)file withName:(NSString*)name atDirectory:(NSString*)dir{
NSFileManager *filemgr;
NSString *docsDir;
NSString *newDir;
BOOL create=NO;
filemgr =[NSFileManager defaultManager];
docsDir = [StorageManager applicationDocumentsDirectory];
newDir = [docsDir stringByAppendingPathComponent:dir];
if(![filemgr fileExistsAtPath:newDir]){
if([filemgr createDirectoryAtPath:newDir withIntermediateDirectories:NO attributes:nil error:nil]){
create=YES;
}
}else
create=YES;
if(create){
if(![filemgr createFileAtPath:newDir contents:file attributes:nil]){
[filemgr release];
return YES;
}
}
[filemgr release];
return NO;
}
Ответ №1:
Я не уверен, почему файл не создан. На первый взгляд, кажется, что ваш код должен работать. Но, возможно, я что-то упускаю из виду. Это также зависит от того, что именно вы передаете в качестве аргументов storeFile:withName:atDirectory:
методу.
Тем не менее, я публикую ответ, потому что я обнаружил другую ошибку в вашем коде: вам не следует отправлять release
на filemgr
, поскольку вы также не отправляли retain
ему первым и не создавали объект. В этом случае также нет необходимости отправлять на него retain
, поскольку вы используете его только локально в своем методе. Возможно, вы захотите ознакомиться с документом Apple Developer Connection «Основные компетенции Cocoa: управление памятью«.
Я не думаю, что эта ошибка объясняет, почему файл не создается; хотя я удивлен, что ваше приложение не вылетает из-за этого.
Комментарии:
1. если я не создаю папку и пытаюсь создать тот же файл, но внутри папки documents, это происходит хорошо .. я думаю, мне нужно установить разрешения для новой папки…
2. Привет, спасибо за помощь, я просто нахожу решение!!! Проблема в том, что я не добавил к пути к файлу имя файла… боже, эта проблема решена…