保存到 iOS 中的文档目录
saving to documents directory in iOS
我正在尝试保存到 iOS 中的文档目录,主要是从这些问题中获取的:
Save An Image To Application Documents Folder From UIView On IOS and 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 个连接的字符串。
但我需要保存的路径是可变的,而不是硬编码的。我该如何解决这个问题?
您是否调试了第一个示例中的 videoPath?从代码来看,您似乎是通过添加 finalPath 向后构建路径,然后文档目录尝试这样做:
NSString *videoPath = [documentsDirectory stringByAppendingString:finalPath];
你看到的是这样的:
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];
我正在尝试保存到 iOS 中的文档目录,主要是从这些问题中获取的: Save An Image To Application Documents Folder From UIView On IOS and 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 个连接的字符串。
但我需要保存的路径是可变的,而不是硬编码的。我该如何解决这个问题?
您是否调试了第一个示例中的 videoPath?从代码来看,您似乎是通过添加 finalPath 向后构建路径,然后文档目录尝试这样做:
NSString *videoPath = [documentsDirectory stringByAppendingString:finalPath];
你看到的是这样的:
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];