【问题标题】:saving to documents directory in iOS保存到 iOS 中的文档目录
【发布时间】:2016-03-29 20:16:35
【问题描述】:

我正在尝试保存到 iOS 中的文档目录,主要来自以下问题: Save An Image To Application Documents Folder From UIView On IOShow 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 个连接字符串的结果。

但我需要改变保存的路径,而不是硬编码。我该如何解决这个问题?

【问题讨论】:

    标签: ios nsstring


    【解决方案1】:

    您是否从第一个示例中调试了 videoPath?从代码来看,您似乎正在通过添加 finalPath 向后构建路径,然后文档目录尝试这样做:

    NSString *videoPath = [documentsDirectory stringByAppendingString:finalPath];
    

    【讨论】:

      【解决方案2】:

      你看到的是这样的:

      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];
      

      【讨论】:

      • 感谢您的回复。不过,这些都不适合我,它们都只是在字符串的 .mov 部分之前添加了一个斜杠。所以我的 finalPath 是 xxxx/.mov(xxxx 是 videoChallengeID)对于这两种情况
      猜你喜欢
      • 2015-12-05
      • 2015-02-04
      • 1970-01-01
      • 2015-07-19
      • 1970-01-01
      • 1970-01-01
      • 2014-09-10
      • 1970-01-01
      • 2012-01-12
      相关资源
      最近更新 更多