Ich möchte, dass meine App die Dokumente speichert, die auf iCloud Drive erstellt werden, aber es fällt mir schwer, dem zu folgen, was Apple geschrieben hat. Hier ist, was ich bisher habe, aber ich bin mir nicht sicher, wohin ich von hier aus gehen soll.Speichern von iOS 8-Dokumenten auf iCloud Drive
UPDATE2
ich folgend in meinem Code muss manuell ein Dokument zu iCloud-Laufwerk speichern:
- (void)initializeiCloudAccessWithCompletion:(void (^)(BOOL available)) completion {
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
self.ubiquityURL = [[NSFileManager defaultManager] URLForUbiquityContainerIdentifier:nil];
if (self.ubiquityURL != nil) {
dispatch_async(dispatch_get_main_queue(), ^{
NSLog(@"iCloud available at: %@", self.ubiquityURL);
completion(TRUE);
});
}
else {
dispatch_async(dispatch_get_main_queue(), ^{
NSLog(@"iCloud not available");
completion(FALSE);
});
}
});
}
if (buttonIndex == 4) {
[self initializeiCloudAccessWithCompletion:^(BOOL available) {
_iCloudAvailable = available;
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *pdfPath = [documentsDirectory stringByAppendingPathComponent:selectedCountry];
NSURL* url = [NSURL fileURLWithPath: pdfPath];
[self.manager setUbiquitous:YES itemAtURL:url destinationURL:self.ubiquityURL error:nil];
}];
}
Ich habe die für den App-ID gesetzt Ansprüche und in Xcode selbst. Ich klicke auf die Schaltfläche, um sie auf iCloud Drive zu speichern, und es werden keine Fehler angezeigt. Die App stürzt nicht ab, aber auf meinem Mac in iCloud Drive wird nichts angezeigt. Die App läuft auf meinem iPhone 6 Plus über Test Flight mit iOS 8.1.1.
Wenn ich es auf Simulator laufen (ich weiß, dass es nicht wegen iCloud-Laufwerk funktioniert nicht mit Simulator arbeiten), erhalte ich den Absturz Fehler: 'NSInvalidArgumentException', reason: '*** -[__NSPlaceholderDictionary initWithObjects:forKeys:count:]: attempt to insert nil object from objects[3]'
'setUbiquitous: itemAtURL: destinationURL: error:' kehrt ein BOOL, ob die Operation erfolgreich war oder nicht. Was ist der Rückgabewert? Stellen Sie auch einen Zeiger auf ein 'NSError'-Objekt für den Parameter 'error' bereit. Wenn die Methode NEIN zurückgibt, erhalten Sie wahrscheinlich weitere Hinweise. – fguchelaar
@fbuchelaar Entschuldigung, ich habe nie viel mit NSFileManager vermasselt, also geht mir das etwas über den Kopf. – user717452