【问题标题】:How to use the file path API from Swift to get documents directory and create filenames如何使用 Swift 的文件路径 API 获取文档目录并创建文件名
【发布时间】:2014-08-13 10:31:53
【问题描述】:

我有这段代码可以用 AVFoundation 录制视频,但我不知道如何转换为 Swift

- (void)startRecording 
{    
    NSDateFormatter* formatter = [[NSDateFormatter alloc] init];
    [formatter setDateFormat:@"yyyy-MM-dd-HH-mm-ss"];
    NSString* dateTimePrefix = [formatter stringFromDate:[NSDate date]];

    int fileNamePostfix = 0;
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *documentsDirectory = [paths objectAtIndex:0];
    NSString *filePath = nil;
    do
        filePath =[NSString stringWithFormat:@"/%@/%@-%i.mp4", documentsDirectory, dateTimePrefix, fileNamePostfix++];
    while ([[NSFileManager defaultManager] fileExistsAtPath:filePath]);

    NSURL *fileURL = [NSURL URLWithString:[@"file://" stringByAppendingString:filePath]];
    [self.fileOutput startRecordingToOutputFileURL:fileURL recordingDelegate:self];
}

我不知道如何在 Swift 中使用这些路径..

谢谢!!

【问题讨论】:

    标签: path avfoundation swift xcode6 nsdocumentdirectory


    【解决方案1】:

    获取文档目录的方法如下

    // NSArray *paths = NSSearchPathForDirectoriesInDomains(
    //   NSDocumentDirectory, NSUserDomainMask, YES);
    let paths = NSSearchPathForDirectoriesInDomains(
          .DocumentDirectory, .UserDomainMask, true)
    
    // NSString *documentsDirectory = [paths objectAtIndex:0];
    let documentsDirectory = paths[0] as String
    

    以下是使用后缀选择文件名的方法

    var filePath:String? = nil
    var fileNamePostfix = 0
    do {
        // filePath =[NSString stringWithFormat:@"/%@/%@-%i.mp4", 
        //   documentsDirectory, dateTimePrefix, fileNamePostfix++];
        filePath = 
           "\(documentsDirectory)/\(dateTimePrefix)-\(fileNamePostfix++).mp4"
    } while (NSFileManager.defaultManager().fileExistsAtPath(filePath))
    

    此代码只是您代码的直接端口,除了我在documentsDirectory 之前删除了/,因为它已经是绝对路径。

    【讨论】:

    • 是的,但是获取路径 file://... do filePath =[NSString stringWithFormat:@"/%@/%@-%i.mp4", documentsDirectory, dateTimePrefix, fileNamePostfix++]; while ([[NSFileManager defaultManager] fileExistsAtPath:filePath]); NSURL *fileURL = [NSURL URLWithString:[@"file://" stringByAppendingString:filePath]]; [self.fileOutput startRecordingToOutputFileURL:fileURL recordingDelegate:self];
    • 如何转换这一行,保存在路径中? [self.fileOutput startRecordingToOutputFileURL:fileURL recordingDelegate:self];我不能给委托人打电话
    • 你的班级是否实现了协议?最好用特定的行、您尝试过的内容以及您收到的确切错误消息提出另一个问题。
    猜你喜欢
    • 2011-03-14
    • 2014-07-09
    • 1970-01-01
    • 1970-01-01
    • 2018-02-13
    • 2014-04-21
    • 1970-01-01
    • 2020-05-27
    • 2011-03-11
    相关资源
    最近更新 更多