Невозможно создать URL в каталоге поддержки приложения для файла caf - PullRequest
0 голосов
/ 21 февраля 2012

Когда я напишу этот код, он будет работать

    NSString *recordFile = [NSTemporaryDirectory() stringByAppendingPathComponent: (NSString*)inRecordFile];    

    NSLog(@"////////////////////////// recordFile /////////////////////");
    NSLog(recordFile) ;
    url = CFURLCreateWithString(kCFAllocatorDefault, (CFStringRef)recordFile, NULL);

    // create the audio file
    XThrowIfError(AudioFileCreateWithURL(url, kAudioFileCAFType, &mRecordFormat, kAudioFileFlags_EraseFile,
                                      &mRecordFile), "AudioFileCreateWithURL failed");
    CFRelease(url);

но когда я изменяю recordFile так, чтобы

NSString* Dpath ; 
NSArray * paths;

// Build the Directory 

paths  = NSSearchPathForDirectoriesInDomains(NSApplicationSupportDirectory, NSUserDomainMask, YES);

Dpath = [paths objectAtIndex:0];

Dpath = [DICOMpath stringByAppendingPathComponent:@"YYYYYYYYYYYY"];

Dpath = [DICOMpath stringByAppendingPathComponent:[FirstDirectory stringByTrimmingCharactersInSet: [NSCharacterSet whitespaceAndNewlineCharacterSet]]] ;

Dpath = [DICOMpath stringByAppendingPathComponent:[SecondtDirectory stringByTrimmingCharactersInSet: [NSCharacterSet whitespaceAndNewlineCharacterSet]]];

Dpath = [DICOMpath stringByAppendingPathComponent:@"XXX"];
NSString *recordFile = [Dpath stringByAppendingPathComponent:inRecordFile];

Я вижу сообщение AudioFileCreateWithURL не удалось в консоли, что не так в моем коде, я уверен, что путь, который я использую во втором коде, существует, и работает, inRecordFile - это имя файла caf

1 Ответ

1 голос
/ 21 февраля 2012
    NSError *error = nil;
    NSString *documentFolderPath = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents"];
    NSString *mainImageFolderPath=[documentFolderPath stringByAppendingPathComponent:@"Audio"];
    if (![[NSFileManager defaultManager] fileExistsAtPath:mainImageFolderPath])
{
    [[NSFileManager defaultManager] createDirectoryAtPath:mainImageFolderPath
                              withIntermediateDirectories:YES
                                               attributes:nil
                                                    error:NULL];
}
    NSDateFormatter *nameFormatter = [[NSDateFormatter alloc] init];
    [nameFormatter setDateFormat:@"yyyyMMddHHmmss"];
    NSString *nameString = [nameFormatter stringFromDate:[NSDate date]];
    [nameFormatter release];
    NSString *AudioPath = [mainImageFolderPath stringByAppendingPathComponent:[NSString stringWithFormat:@"%@.caf",nameString]];
    [[NSFileManager defaultManager] copyItemAtPath:[NSTemporaryDirectory() stringByAppendingPathComponent: @"recordedFile.caf"] toPath:AudioPath error:&error];
    if(error)
        NSLog(@"Error audio %@", [error description]);
    else{
        [self.notifier voiceAdded:AudioPath];
        self.recordPath = AudioPath;
        containsSound = YES;
    }

Почему ты идешь в большей сложности? только когда ваш звук записан, скопируйте файл caf в нужный каталог.

...