大家好我们编写了一个在模拟器上可以正常运行的程序。但是,当我们将项目上传到我们自己的设备上时,它可以读取文件并显示项目,但是当它尝试擦除文件并再次写入时,它将无法正常工作。
可能是什么问题,以及如何解决此问题?
似乎您正在尝试在应用程序捆绑包中写入文件。为了安全起见,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] 删除。
我来说两句