2

私の iPhone アプリケーションには、約 500 MB のデータが含まれています。アプリケーションはこのデータをオフラインで使用します。そのため、iTunesでバックアップ/コピーしないようにフォルダーをマークします。だから私は以下のURLを使用しています: https://gist.github.com/1999985

しかし、「NSURLIsExcludedFromBackupKey」が宣言されていないと表示されます。また、 https://developer.apple.com/library/ios/#qa/qa1719/_index.htmlを使用しようとしまし たが、常にfalseを返します..

それで、それがどのように機能するか教えてください??

どうも

4

2 に答える 2

5

NSURLIsExcludedFromBackupKey5.1以降のSDKで正常にコンパイルされるはずです。
キーは5.0で使用できないため、次のスニペットが回避策として機能する可能性があります。

if (SYSTEM_VERSION_LESS_THAN_OR_EQUAL_TO(@"5.0.1"))
{
    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;
}          
if (SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"5.1"))
{
    NSError *error = nil;
    //[URL setResourceValue:[NSNumber numberWithBool:YES] forKey:NSURLIsExcludedFromBackupKey error:&error];
    [URL setResourceValue:[NSNumber numberWithBool:YES] forKey:@"NSURLIsExcludedFromBackupKey" error:&error];
    return error == nil;
}
于 2012-05-24T18:48:46.687 に答える
2

「SYSTEM_VERSION_LESS_THAN_OR_EQUAL_TO」を使用して OS バージョンを確認するとエラーが発生しました。私のアプリは古い OS ツールで開発されています。だから私はこれに変更し、「SYSTEM_VERSION_LESS_THAN_OR_EQUAL_TO」に置き換えます

double currSysVer =[[[UIDevice currentDevice] systemVersion] doubleValue];
if (currSysVer>=5.1) {
    NSError *error = nil;
    //[URL setResourceValue:[NSNumber numberWithBool:YES] forKey:NSURLIsExcludedFromBackupKey error:&error];
    [URL setResourceValue:[NSNumber numberWithBool:YES] forKey:@"NSURLIsExcludedFromBackupKey" error:&error];
    return error == nil;
}else{

    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;

}
于 2012-10-05T17:32:21.957 に答える