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