Я видел пример кода iCloud Document для iOS и использовал его для синхронизации udocument в iCloud и из него, и теперь я пытаюсь синхронизировать iCloud с nsdocument в приложении Mac OSX, в котором нет UIDocument
.
Я пытался изменить UIDocument
на NSDocument
, но все методы синхронизации с icloud отличаются. Я не нашел ни одного примера кода или руководств, кроме документации из apple, что очень запутанно и плохо написано.
Например, приведенный ниже метод из UIDocument
в iOS не существует в NSDocument
в OS X:
//doc is an instance of subclassed UIDocument
[doc openWithCompletionHandler:nil];
Документация Apple предоставляет этот код для OS X:
- (void)checkIfCloudAvaliable {
NSURL *ubiquityContainerURL = [[[NSFileManager defaultManager]
URLForUbiquityContainerIdentifier:nil]
URLByAppendingPathComponent:@"Documents"];
if (ubiquityContainerURL == nil) {
NSDictionary *dict = [NSDictionary dictionaryWithObjectsAndKeys:
NSLocalizedString(@"iCloud does not appear to be configured.", @""),
NSLocalizedFailureReasonErrorKey, nil];
NSError *error = [NSError errorWithDomain:@"Application" code:404
userInfo:dict];
[self presentError:error modalForWindow:[self windowForSheet] delegate:nil
didPresentSelector:NULL contextInfo:NULL];
return;
}
dest = [ubiquityContainerURL URLByAppendingPathComponent:
[[self fileURL] lastPathComponent]];
}
- (void)moveToOrFromCloud {
dispatch_queue_t globalQueue =
dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
dispatch_async(globalQueue, ^(void) {
NSFileManager *fileManager = [[NSFileManager alloc] init];
NSError *error = nil;
// Move the file.
BOOL success = [fileManager setUbiquitous:YES itemAtURL:[self fileURL]
destinationURL:dest error:&error];
dispatch_async(dispatch_get_main_queue(), ^(void) {
if (! success) {
[self presentError:error modalForWindow:[self windowForSheet]
delegate:nil didPresentSelector:NULL contextInfo:NULL];
}
});
});
[self setFileURL:dest];
[self setFileModificationDate:nil];
}
Как я могу синхронизировать iOS и OS X (поскольку NSDocument
не существует в iOS, а UIDocument
не существует в OS X)? Кто-нибудь знает, где я могу найти образец для Mac OSX (синхронизация NSDocument
)?