Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/115.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/24.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_Objective C - Fatal编程技术网

安全访问iOS中的文件

安全访问iOS中的文件,ios,objective-c,Ios,Objective C,我创建了一个应用程序,它将propertylist序列化到一个文件中。我从用户那里得到一些报告,保存的数据有时会丢失。下面的代码有问题吗 如果文件确实存在但被阻止,并且文件existsatpath:返回否,那么是否会重新创建该文件 NSString *rootPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0]; plistPath = [r

我创建了一个应用程序,它将propertylist序列化到一个文件中。我从用户那里得到一些报告,保存的数据有时会丢失。下面的代码有问题吗

如果文件确实存在但被阻止,并且
文件existsatpath:
返回
,那么是否会重新创建该文件

NSString *rootPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
plistPath = [rootPath stringByAppendingPathComponent:@"BookmarkData.plist"];

if (![[NSFileManager defaultManager] fileExistsAtPath:plistPath])
{
    [[NSFileManager defaultManager] createFileAtPath:plistPath contents:nil attributes:nil];
}

检查文件是否存在的Api通常返回true或false。False通常表示该文件处于可访问状态,而不是它不存在。因此,例如,如果文件存在于文件共享上,但您没有读取权限,那么它将返回false。例如,如果另一个线程或用户已经打开了该文件,则可能是相同的


显然,在iOS上,这些原因中的一些不太可能发生,但可能会发生类似的情况。

您没有显示调用该代码的位置。没有这一点,就无法确定


如果您只是在应用程序终止时才这样做,那么这很可能是间歇性数据丢失的原因。我们绝不保证您的应用程序会以友好、可控的方式终止。用户可能会强制终止,设备可能会重置,应用程序可能会崩溃等等。

你说的“阻止”是什么意思?请更新你的问题,并向我们展示你实际如何写入数据。通过NSLog()打印变量以检查结果。你是否认真使用
createFileAtPath:plistPath内容:nil