【问题标题】:copy OSX folder to iOS directory将 OSX 文件夹复制到 iOS 目录
【发布时间】:2012-10-30 11:25:26
【问题描述】:

我正在尝试将文件夹及其内容复制到文档目录中的子目录中,但失败并出现以下错误: "操作无法完成。没有这样的文件或目录"

首先我尝试在文档目录中创建一个文件夹,如下所示:

NSString *diagramsDirectory = [docDirectory stringByAppendingPathComponent:@"Diagrams"];
if (![fileManager fileExistsAtPath:docDirectory isDirectory:&isDirectory] || !isDirectory)
{
    NSError *error = nil;
    NSDictionary *attr = [NSDictionary dictionaryWithObject:NSFileProtectionComplete
                                                     forKey:NSFileProtectionKey];
    [fileManager createDirectoryAtPath:diagramsDirectory
           withIntermediateDirectories:NO
                            attributes:attr
                                 error:&error];
    if (error) {
        NSLog(@"error creating dir. path: %@", [error localizedDescription]);
    }
}
NSLog(@"diagrams directory = %@", diagramsDirectory);

控制台日志似乎表明这是可行的:

diagrams directory = /Users/../iPhone Simulator/../Library/Documentation/Diagrams

但是,当我尝试从 Mac 上的目录中复制名为“Diagrams”的文件夹时:

NSString *pathToDirectories = @"/User/Desktop/Project Resource Files/Files/";
NSError *error = nil;
NSArray *folders = [fileManager contentsOfDirectoryAtPath:pathToDirectories error:&error];   
for (NSString *folder in folders) {      
    if ([folder isEqualToString:@"Diagrams"]) {
        [self copyFolderAtPath:folder toDestinationFolderAtPath:docDirectory];            
    }

调用“copyFolderAtPath”方法:

- (BOOL)copyFolderAtPath:(NSString *)sourceFolder toDestinationFolderAtPath:(NSString *)destinationFolder
{
    destinationFolder = [destinationFolder stringByAppendingPathComponent:[sourceFolder lastPathComponent]];    
    NSFileManager *fileManager = [NSFileManager defaultManager];
    NSError *error = nil;

    // check for destination folder
    if ([fileManager fileExistsAtPath:destinationFolder])
    {
        if (![fileManager removeItemAtPath:destinationFolder error:&error])
        {
            NSLog(@"Could not remove old files. Error: %@", error);
            return NO;
        }
    }
    error = nil;
    // copy destination
    if (!([fileManager copyItemAtPath:sourceFolder toPath:destinationFolder error:&error])) {
        NSLog(@"failed copying file at path %@ to path %@. Error %@", sourceFolder, destinationFolder, error);
        return NO;
    }
    return YES;
}

它返回“否”,我得到了错误。

有人知道我做错了什么吗?

【问题讨论】:

  • 澄清一下,您是在尝试从 Mac 复制到 iOS 模拟器设备?
  • @bryanmac:是的。这不可能吗?
  • 我已更新问题标题。
  • @Robert:不可能。它们是独立的设备,如果你想在它们之间共享文件,你将不得不寻找另一种方式。

标签: ios objective-c xcode macos filesystems


【解决方案1】:

设备(以及模拟器)与操作系统隔离,因此您无法直接复制文件系统。想象一下,即使它允许您从模拟器中执行此操作,运行您的应用程序的断开连接的设备将如何访问操作系统文件系统?

您将不得不考虑其他选项,例如在opens sockets 的 Mac 上安装一个应用程序,或者在设备从中复制的 Mac 上安装一个 http 端点。其他选项包括同步文档via iCloudanother cloud service。你也可以transfer files via iTunes。我敢肯定还有很多其他的选择......另外结帐this

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2018-11-30
  • 2014-07-25
  • 1970-01-01
  • 2013-05-21
  • 1970-01-01
  • 2012-04-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多