检查可用性似乎工作正常,但我似乎无法设置NSURLIsExcludedFromBackupKey密钥而不会在启动时出现此崩溃:
dyld:未找到符号:_NSURLIsExcludedFromBackupKey引用自:/ Users/sam/Library/Application Support/iPhone Simulator/5.0/Applications/B0872A19-3230-481C-B5CE-D4BDE264FBDF/Transit.app/Transit预期:/ Applications/Xcode. app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator5.0.sdk/System/Library/Frameworks/Foundation.framework/Foundation in/Users/sam/Library/Application Support/iPhone Simulator/5.0/Applications /B0872A19-3230-481C-B5CE-D4BDE264FBDF/Transit.app/Transit
这是我的方法:
- (BOOL)addSkipBackupAttributeToItemAtURL:(NSURL *)URL {
if (&NSURLIsExcludedFromBackupKey == nil)
return NO;
NSError *error;
[URL setResourceValue:[NSNumber numberWithBool:YES] forKey:NSURLIsExcludedFromBackupKey error:&error];
return (error != nil);
}
Run Code Online (Sandbox Code Playgroud)
如果我注释掉这一行,崩溃就会消失:
[URL setResourceValue:[NSNumber numberWithBool:YES] forKey:NSURLIsExcludedFromBackupKey error:&error];
Run Code Online (Sandbox Code Playgroud)
我必须弱化基金会吗?
编辑:不确定它是否有所作为,但这种方法被放在一个NSFileManager类别中.
我们将数据存储到应用程序的Document目录中,我们拒绝了应用程序.我们尝试使用"不备份"属性来在当前版本中使用以下代码存储数据.
- (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)
我们已根据iOS数据存储指南使用它.
在早期版本中,我们还尝试将数据存储在Private目录中.但是,我们无法获得申请批准.
您能否就我们无法获得申请批准的原因向您提供更多说明?或者,我们还需要有关数据存储的代码的任何其他更改?所以,我们可以获得批准,我们在iTunes上有新版本的应用程序.