txt文件写入在模拟器中有效,但在实际设备xcode中无效

信天翁

大家好我们编写了一个在模拟器上可以正常运行的程序。但是,当我们将项目上传到我们自己的设备上时,它可以读取文件并显示项目,但是当它尝试擦除文件并再次写入时,它将无法正常工作。

可能是什么问题,以及如何解决此问题?

NS僵尸

似乎您正在尝试在应用程序捆绑包中写入文件。为了安全起见,Apple不允许您触摸套件。你必须 :

  • 检查您的文件在沙箱中是否存在
  • 如果不是,请从应用程序捆绑包中复制
  • 然后,使用复制的文件

我认为它可以在模拟器中使用,因为在模拟器中运行应用程序时没有沙箱。以下是在应用的沙箱中查找正确文件夹的文档。

沙盒文档

文件系统编程指南

编辑 :

这是一些代码(未在Xcode中运行它,可能存在一些拼写错误),用于将文件包中的文件复制到Documents目录中的给定目录中。请注意,此代码每次都会覆盖Documents目录中的文件。

NSString *documentsDirectory = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)[0];
NSString *fileDirectory = [documentsDirectory stringByAppendingPathComponent:@"MyDirectory"];

// Create folder if it does not exist
BOOL isDirectory;
if (![[NSFileManager defaultManager] fileExistsAtPath:fileDirectory isDirectory:&isDirectory])
{
    NSError *error;
    [[NSFileManager defaultManager] createDirectoryAtPath:fileDirectory withIntermediateDirectories:NO attributes:nil error:&error];
    if(error)
    {
        NSLog(@"Error creating folder : %@",error.localizedDescription);
        return;
    }
    else
    {
        NSLog(@"Folder created");
    }
}

// Save to disk
NSString *filePathOnDisk = [fileDirectory stringByAppendingPathComponent:@"fileInSandbox.foo"];
NSString *pathFromBundle = [[NSBundle mainBundle] pathForResource:@"fileFromBundle" ofType:@"foo"];
NSData *fileData = [NSData dataWithContentsOfFile:pathFromBundle];
NSError *error;
if (![fileData writeToFile:filePathOnDisk options:NSDataWritingAtomic error:&error])
{
    NSLog(@"Error writing file : %@", error.localizedDescription);
}
else
{
    NSLog(@"File saved to disk successfully");
}

然后,当您要使用复制的文件时,请使用我们在中创建的路径filePathOnDisk

请再次阅读与文件管理有关的文档,以了解您对文件的处理方式。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Android Volley请求在模拟器中有效,但在设备中无效

MFMailComposeViewController navigationBar覆盖在模拟器中有效,但在设备中无效

通知在模拟器上有效,但在实际设备上无效

ftp连接在模拟器上有效,但在实际设备上无效

SwiftUI 后台模式在模拟器中有效,但在真实设备上无效?

Firebase Cloud 消息在模拟器中有效,但在 IOS 设备上无效

Firebase 功能在模拟器中有效,但在浏览器中无效

Firebase安全规则在模拟器中有效,但在代码中无效

Firestore规则get()在模拟器中有效,但在应用程序中无效

Firestore数据库规则在模拟器中有效,但在应用程序中无效

Firestore安全规则在模拟器中有效,但在应用程序中失败

iAd在模拟器上有效,但在设备上崩溃(ipad)

UITextView:链接检测在模拟器中有效,不在设备上

htaccess(RewriteRule)在wamp中有效,但在实际服务器中不起作用

Firestore规则中的WriteFields仅在模拟器中有效

orphanRemoval在PostgreSQL中有效,但在hsqldb中无效

函数在查询中有效,但在约束中无效

Scrapy 在 shell 中有效,但在代码中无效

代码在终端中有效,但在脚本中无效

WritePrivateProfileString 在 main 中有效但在函数中无效

负面的 Lookbehind 在编辑器中有效,但在 Powershell 脚本中无效

函数在调试器中有效,但在实时代码中无效

HTTP DELETE在浏览器中有效,但在Postman或IOS App中无效

API调用在浏览器中有效,但在curl / wget中无效

Android深层链接在ADB中有效,但在浏览器中无效

测试在浏览器中有效,但在PhantomJS中无效

重写规则在测试器中有效,但在.htaccess中无效

jQuery 脚本在 HTML 中有效,但在外部文件中无效

单张setstyle更新在控制台中有效,但在文件中无效