【问题标题】:Modify NSURL to save two versions of same file修改 NSURL 以保存同一文件的两个版本
【发布时间】:2014-01-06 04:36:33
【问题描述】:

我为 Avid Media Composer 视频编辑器编写了一个小型实用程序,它解析编辑决策列表并生成两个单独的文本文件供编辑器使用。我能够保存第一个文件没问题。但我不太清楚如何修改我的 URL 以自动保存第二个文件。

假设第一个文件名为:FirstFile.txt

我只想将第二个自动保存为:FirstFile_SubCap.txt

我一直以某种方式与 NSURL 和 NSString 规则发生冲突,并且出现大量错误。如果有人对如何执行此操作有一些指导,我将不胜感激。

到目前为止,这是我的代码。我已经删除了我的错误代码,但评论了我想要完成的位置和目标。

NSSavePanel *saveFile = [NSSavePanel savePanel];
long result = [saveFile runModal];
if(result == NSOKButton){
    NSURL *selectedFile = [saveFile URL];
    NSString *writeFile = [_infoWINDOW string];
    [writeFile writeToURL:selectedFile atomically:YES encoding:NSUTF8StringEncoding error:nil];

    // If the following condition is met, save the second file...

    if ([_subCap isEqual: @"yes"]) {

        // Here's where I need to save the second file as selectedFile+"_SubCap.txt"
    }

提前致谢。

克里斯·康利

【问题讨论】:

  • 如果您发布现有代码会很有帮助。
  • 我刚刚添加了一个代码块。谢谢。
  • 所以你想写入相同的字符串 (writeFile) 并在文件名后附加 _SubCap 扩展名?
  • 实际上,我想将 [_subCap string] 写入 (writeFile) 并附加 _SubCap.txt 扩展名。
  • 好的,看我的回答。只需将 subCapString 定义为您要写入 _SubCap.txt 文件的任何字符串。

标签: nsstring nsurl


【解决方案1】:

您必须将 URL 转换为路径字符串,通过将扩展名与完整路径分开来将其分开,然后使用附加的 _SubCap 扩展名重新构建它。代码:

NSString *subCapString = .... // string to write to _SubCap.txt file
NSString *path = selectedFile.path;
NSString *extension = path.pathExtension;
NSString *strippedPath = [path stringByDeletingPathExtension];
NSString *newPath = [NSString stringWithFormat:@"%@_SubCap.%@", strippedPath, extension];
NSURL *subcapURL = [NSURL fileURLWithPath:newPath];
[subCapString writeToURL:subcapURL atomically:YES encoding:NSUTF8StringEncoding];

【讨论】:

  • 太好了,成功了!太感谢了。在您回答之前,我已经接近了:` NSURL *subCapSave = [selectedFile URLByDeletingPathExtension]; subCapSave = [subCapSave URLByAppendingPathExtension:@"SubCap.txt"]; ` 唯一的问题是,不是创建“File_SubCap.txt”,而是创建“File.SubCap.txt”,这也可以,但我更喜欢你的回答。
  • 你根本不需要把它变成一条路径。所有这些都可以直接使用等效的NSURL 方法来实现
【解决方案2】:

以下是通过调整另一个文件名来生成 URL 的方法:

NSURL *selectedFile = [saveFile URL];

NSString *subCapString = [NSString stringWithFormat:
                          @"%@_SubCap.%@",
                          [selectedFile URLByDeletingPathExtension].absoluteString,
                          selectedFile.pathExtension];

NSURL *subCapURL = [NSURL URLWithString:subCapString];

【讨论】:

  • NSURL *subCapString 应该是NSString *subCapString
猜你喜欢
  • 1970-01-01
  • 2021-01-07
  • 2013-02-25
  • 2017-08-05
  • 1970-01-01
  • 1970-01-01
  • 2021-09-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多