コードからバックアップ属性パラメーターを機能させることができないようです。私が何をしているように見えても、メソッドは「不明なエラー-1」でfalseを返します。skip-backupメソッドのさまざまな反復を試しましたが、見つけた別の投稿に基づいて、以下は私が使用している最新のものです。
- (BOOL)addSkipBackupAttributeToItemAtURL:(NSURL *)URL
{
const char* filePath = [[URL path] fileSystemRepresentation];
const char* attrName = "com.apple.MobileBackup";
if (&NSURLIsExcludedFromBackupKey == nil) {
// iOS 5.0.1 and lower
u_int8_t attrValue = 1;
int result = setxattr(filePath, attrName, &attrValue, sizeof(attrValue), 0, 0);
return result == 0;
} else {
// First try and remove the extended attribute if it is present
int result = getxattr(filePath, attrName, NULL, sizeof(u_int8_t), 0, 0);
if (result != -1) {
// The attribute exists, we need to remove it
int removeResult = removexattr(filePath, attrName, 0);
if (removeResult == 0) {
NSLog(@"Removed extended attribute on file %@", URL);
}
}
// Set the new key
return [URL setResourceValue:[NSNumber numberWithBool:YES] forKey:NSURLIsExcludedFromBackupKey error:nil];
}
}
メソッドの呼び出しは次のようになります(実行時に常に「失敗」と出力されます)。
if ([self addSkipBackupAttributeToItemAtURL:[NSURL fileURLWithPath:filePath]]) {
NSLog(@"success!");
} else {
NSLog(@"not successful");
}
また、filePathは、ドキュメントフォルダの画像へのNSStringパスです。次のように画像パスの例を記録しました。
/var/mobile/Applications/B3583D06-38BC-45F0-A027-E79997F0EC60/Documents/myImage.png
私のアプリでは、そこにプッシュするすべての(多数の)ファイルをループし、この属性を追加しています。それはそれらの一つ一つで失敗します。これらの動的に駆動されるファイルにはオフライン機能が厳しい要件があるため、これを機能させる必要があります。他の多くの人がこの問題を抱えているとは思わないので、ここで明らかな何かが欠けている可能性があることを教えてくれます、笑。
私はこの投稿を見つけました:このコードを使用してiCloudバックアップからファイルを除外した後もアプリケーションが拒否されたのはなぜですか?
そして、それは私の問題が何であるかについては有望に見えますが、具体的に解決する方法についての詳細は実際にはありません(docsフォルダーの代わりに/ Libraryを使用することをお勧めしますか?)。
これを手伝ってくれる人に事前に感謝します!-ヴィンセント