And*_*son 22 iphone cocoa-touch objective-c ios5
编辑:到目前为止,我能够提出的最好的是一个弹出窗口,要求用户禁用iCloud同步,同时将所有数据移动到Documents目录,这样就不会被擦除:在iOS5中,是否可以检测用户是否设置了备份应用程序?
我为iPhone/iPad开发了离线地图应用程序.
我们曾经在Caches目录中存储了所有数据(可能有很多演出).
从iOS5开始,当用户的硬盘驱动器开始变满时,可以随机删除Caches目录中的文件.
如何在不将数据同步到iCloud,iTunes且不随机删除的情况下存储本地数据?我的本地数据是一个包含许多小数据文件的大型目录树,存在于数千个子目录中.
我将目录树从库缓存目录移动到文档目录中的data.nosync目录,因为我们已经读过这可能是一个解决方案.但是,nosync文件夹中的数据仍将备份到iCloud.
现在我创建目录:
NSString* noSyncDirectory() {
static NSString *directory = nil;
if (!directory) {
directory = [[NSString stringWithFormat:@"%@/%@",
documentsDirectory(), @"data.nosync"] retain];
[Constants createDirectoryIfNeeded:directory];
}
return directory;
}
Run Code Online (Sandbox Code Playgroud)
Bad*_*ate 13
来自:https://developer.apple.com/library/ios/#qa/qa1719/_index.html
您可以使用以下方法设置"不备份"扩展属性.每当您创建不应备份的文件或文件夹时,请将数据写入文件,然后调用此方法,并将URL传递给该文件.
#include <sys/xattr.h>
- (BOOL)addSkipBackupAttributeToItemAtURL:(NSURL *)URL
{
const char* filePath = [[URL path] fileSystemRepresentation];
const char* attrName = "com.apple.MobileBackup";
u_int8_t attrValue = 1;
int result = setxattr(filePath, attrName, &attrValue, sizeof(attrValue), 0, 0);
return result == 0;
}
Run Code Online (Sandbox Code Playgroud)
可以找到更多信息:https://developer.apple.com/icloud/documentation/data-storage/
此外,注意:当开发者文档错误地暗示("这些文件将不被清除,将不会被包含在用户的iCloud或iTunes备份")的DO-没有备份标志兼作拒收清除标志事实并非如此.只需将文件保留在缓存目录中并将其标记为"不备份"就不会阻止其擦除.
| 归档时间: |
|
| 查看次数: |
8788 次 |
| 最近记录: |