У меня было то же самое после обновления ShareKit и повторного выполнения проекта для iOS 5.1. Я получаю либо ошибку при компиляции, либо при связывании, связанном с NSURLIsExcludedFromBackupKey.
Представители ShareKit рекомендуют решить проблему, убедившись, что ваш проект связан с платформой CoreFoundation и для него задано значение «Необязательно», а не «Обязательно». Однако это не сработало для меня.
В конце концов я справился с этим, используя препроцессор:
- (BOOL)addSkipBackupAttributeToItemAtURL:(NSURL *)URL
{
#ifndef NSURLIsExcludedFromBackupKey
// iOS <= 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;
#else
// iOS >= 5.1
// 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);
}
}
return [URL setResourceValue:[NSNumber numberWithBool:YES] forKey:NSURLIsExcludedFromBackupKey error:nil];
#endif
}