iPhone 使用文件共享保存文件时出现问题

Posted

技术标签:

【中文标题】iPhone 使用文件共享保存文件时出现问题【英文标题】:iPhone problem saving files with file sharing 【发布时间】:2011-01-07 15:33:30 【问题描述】:

我有一个应用程序,允许用户单击按钮将铃声保存到文档目录。我的 iPad 版本工作正常,但是,对 iPhone 使用相同的方法似乎不起作用。这是我用来保存的代码:

- (IBAction) saveFile:(id)sender 
    // Get the path to the Documents Directory
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *documentsDirectory = [paths objectAtIndex:0];

    // Detect which button was double tapped and set up the file to save
    NSString *filePath;
    NSString *fileName;
    if (sender == downloadRingtone1)
            filePath = [[NSBundle mainBundle] pathForResource:@"RingtoneTest" ofType:@"m4r"];
            fileName = @"RingtoneTest.m4r";
     else if (sender == downloadRingtone2)
            filePath = [[NSBundle mainBundle] pathForResource:@"RingtoneTest2" ofType:@"m4r"];
            fileName = @"RingtoneTest2.m4r";

    NSString *m4rPath = [documentsDirectory stringByAppendingPathComponent:fileName];
    NSFileManager *fileManager = [NSFileManager defaultManager];

    // Detect if the file already exists
    BOOL fileExists = [fileManager fileExistsAtPath:m4rPath];

    if (fileExists) 
            UIAlertView *alert = [[[UIAlertView alloc] initWithTitle:@"File Already Saved" message:@"The selected file already exists. Sync to iTunes to finish loading the file." delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil] autorelease];
            [alert show];
     else         
            // Save the file        
            [fileManager copyItemAtPath:filePath toPath:m4rPath error:nil];

            // Notify of the save
            UIAlertView *alert = [[[UIAlertView alloc] initWithTitle:@"File Saved" message:@"You must sync your device to iTunes to finish loading. For complete instructions, visit the \"Download Instructions\" page." delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil] autorelease];
            [alert show];
    

我知道这是文件管理器的问题。正如发布的那样,它总是像文件存在一样进入 if 语句(它不存在)。当我将 if 语句注释掉以强制它保存时,应用程序崩溃了。我究竟做错了什么?你和 iPhone 有什么不同吗?另外,我认为这不是问题,但我正在 iPod touch 上进行测试(它已更新到最新的 ios 4.2.1。我无法使用 iPhone。任何帮助将不胜感激。

【问题讨论】:

【参考方案1】:

上面的代码是正确的。如果有人遇到同样的问题,请确保将按钮连接到 Interface Builder 中的正确插座。

【讨论】:

以上是关于iPhone 使用文件共享保存文件时出现问题的主要内容,如果未能解决你的问题,请参考以下文章

保存电子邮件附件时出现运行时错误 '91

使用 .NET SDK 从 Azure 文件共享下载空文件时出现 InvalidRange 错误

读取和写入共享文件时出现 IPC 同步问题

文件位置更改为远程共享时出现 BULK INSERT 错误

为 iPad 添加新目标后创建 AdHoc 时出现 iPhone App 问题

Xcode 5 您的二进制文件未针对 iPhone 5 进行优化验证时出现错误