Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/111.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将文件传输到物理iOS设备_Ios_Xcode_Ipad - Fatal编程技术网

将文件传输到物理iOS设备

将文件传输到物理iOS设备,ios,xcode,ipad,Ios,Xcode,Ipad,我已经设置了一个配置文件(通过Xcode)在连接的物理设备上调试我的应用程序 问题是此应用程序需要某些支持文件。有了Mac上的模拟器,我只需导航到模拟器目录下应用程序的文档目录,并将文件放在那里 有没有办法将这些相同的文件放到物理设备上?将这些文件放在项目文件结构中。 因此,它们将被复制到您的应用程序包中,并将通过documents目录提供 要将文件正确添加到iOS项目,请执行以下操作: 右键单击左侧文件列表顶部的项目图标 选择将文件添加到 选择要包含的文件夹/文件,然后单击“添加”。 不要忘

我已经设置了一个配置文件(通过Xcode)在连接的物理设备上调试我的应用程序

问题是此应用程序需要某些支持文件。有了Mac上的模拟器,我只需导航到模拟器目录下应用程序的
文档
目录,并将文件放在那里


有没有办法将这些相同的文件放到物理设备上?

将这些文件放在项目文件结构中。 因此,它们将被复制到您的应用程序包中,并将通过documents目录提供

要将文件正确添加到iOS项目,请执行以下操作:

  • 右键单击左侧文件列表顶部的项目图标
  • 选择
    将文件添加到
  • 选择要包含的文件夹/文件,然后单击“添加”。
    • 不要忘记从给定列表中选择正确的
      目标。请参考截图
  • 如果您的资源不是单个文件,而是目录结构,并且希望复制所有目录树,请记住选择添加的文件夹:创建组
  • 在XCode 6.x中,文件添加弹出窗口如下所示:

    构建目标后,打开包,您的目录结构将完整地存在其中。不仅如此,还可以通过iOS SDK访问这些文件,如下所示

    因此,您可能需要将它们复制到应用程序中的documents/library目录,因为您可能希望在应用程序中访问它们

    使用以下代码进行复制

    // Check if the file has already been saved to the users phone, if not then copy it over
    BOOL success;
    NSString *fileName = @"test.jpg";
    NSString *LIBRARY_DIR_PATH = [NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES) objectAtIndex:0];
    
    NSString *filePath = [LIBRARY_DIR_PATH stringByAppendingPathComponent:fileName];
    NSLog(@"%@",filePath);
    
    // Create a FileManager object, we will use this to check the status
    // of the file and to copy it over if required
    NSFileManager *fileManager = [NSFileManager defaultManager];
    
    // Check if the file has already been created in the users filesystem
    success = [fileManager fileExistsAtPath:filePath];
    
    // If the file already exists then return without doing anything
    if(success) return;
    
    // Else,
    NSLog(@"FILE WASN'T THERE! SO GONNA COPY IT!");
    
    // then proceed to copy the file from the application to the users filesystem
    // Get the path to the files in the application package
    NSString *filePathFromApp = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:fileName];
    
    // Copy the file from the package to the users filesystem
    [fileManager copyItemAtPath:filePathFromApp toPath:filePath error:nil];
    
    希望上面的代码示例对您来说是清晰的

    因此,每当您想在应用程序中访问该文件时,您都可以通过获取该文件的路径来获取该文件的引用,如下所示:

        NSString *sqliteDB = [LIBRARY_DIR_PATH stringByAppendingPathComponent:fileName];
    
    注意:在任何情况下,如果需要将文件复制到用户应用程序安装位置内的
    文档
    目录,请使用以下内容替换
    库目录

    NSString *DOCUMENTS_DIR_PATH = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
    
    希望这个答案对你有帮助


    干杯

    你不能让他们成为目标的一部分资源吗?然后,您可以在运行时使用
    [[NSBundle mainBundle]pathForResource:ofType::
    加载它们。对于某些事情,我可以这样做,但对于不属于程序本身的文件,这更是如此,因此不应该是包的一部分。想想iTunes和下载的歌曲。嗯,我记得你可以使用iTunes(如果你的应用程序的设置允许的话)从
    Documents
    文件夹中提取文件,但不确定你是否可以放入。如果在现实生活中,这些文件是你的应用程序从远程服务器下载的文件,也许你应该首先实现这一功能(即,虚拟服务器)。这是一个很好的解决方案。一个小细节:我想他想把它放到
    文档中,而不是
    库中。
    。是的,这是真的。事实上,这可能必须与苹果的指导方针保持一致,对吧?否则以后会有问题。太棒了!我会试试看,看看它是怎么回事。看起来它符合我的要求。@kasurandika true;必须小心你在文档中存储的内容,除非你标记为“无备份”。@Kasun工作得很有魅力!不得不做一些小改动以符合我的预期工作流程,但是的,这个想法是完美的。应该有一本书叫做《苹果政策黑客指南》,这本书绝对应该在里面:)