2016-03-29 3 views
0

Я пытаюсь сохранить в каталог документов в прошивке, принимая во многом из этих вопросов: Save An Image To Application Documents Folder From UIView On IOS и how to save video in documents folder then upload to serverсохранение в каталог документов в прошивкой

Вот моя проблема. Следующий код не работает, чтобы сохранить:

NSString *mov = @".mov"; 
NSString *finalPath = [NSString stringWithFormat: @"/%@%@", self.videoChallengeID, mov]; 
NSString *videoPath= [[NSString alloc] initWithString:[NSString stringWithFormat:finalPath,documentsDirectory]]; 

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 
[defaults setObject:videoPath forKey:self.videoChallengeID]; 
BOOL success = [self.videoData writeToFile:videoPath atomically:NO]; 

Но следующий код делает работу, чтобы сохранить:

NSString *videoPath= [[NSString alloc] initWithString:[NSString stringWithFormat:@"%@/thisWorks.mov",documentsDirectory]]; 

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 
[defaults setObject:videoPath forKey:self.videoChallengeID]; 
BOOL success = [self.videoData writeToFile:videoPath atomically:NO]; 

Единственное отличие состоит в том, что путь, который я пишу в примере, где это сохранить , он жестко закодирован на %@/thisWorks.mov, тогда как с другим примером путь является результатом 2 конкатенированных строк.

Но мне нужен путь, который я сохраняю, чтобы меняться, а не быть жестко закодированным. Как я могу это исправить?

ответ

0

Вы отлаживали свой видеоролик с первого примера? Судя по коду это выглядит, как вы строите путь в обратном направлении, добавив finalPath затем каталог документов попробуйте сделать это следующим образом:

NSString *videoPath = [documentsDirectory stringByAppendingString:finalPath]; 
+0

да, это сработало – joey

-1

То, что вы смотрите на что-то вроде этого:

NSString *documentsDirectory = @"A_Directory/Documents"; 
NSString *fileName   = @"SomeVideoName"; 
NSString *fileType   = @".mov"; 

Вы должны объединить все из них, чтобы сделать:

@"A_Directory/Documents/SomeVideoName.mov" 

Вы можете получить, что с помощью:

NSString *fullPath = [NSString StringWithFormat:@"%@/%@%@", documentsDirectory, fileName fileType]; 

Или вы можете использовать, NSStrings методы пути

stringByAppendingPathComponent 
stringByAppendingPathExtension 

если вы измените

NSString *fileType = @".mov"; 

Для

NSString *fileType = @"mov"; 

Вы можете сделать это:

NSString *pathWithOutExtension = [documentsDirectory stringByAppendingPathComponent:fileName]; 
NSString *fullPath = [pathWithOutExtension stringByAppendingPathExtension:fileType]; 
+0

спасибо за ответ. Ни один из тех не работал для меня, хотя, как просто добавил косую черту перед частью .mov строки. поэтому мой finalPath был xxxx/.mov (xxxx - videoChallengeID) для обоих случаев – joey