Я свяжусь и смог сохранить фотографию с помощью CloudKit, по крайней мере, я думаю, что сделал, потому что я не знаю удобного для пользователя способа проверить, прав ли я. Я задаю им в сценарии, что пользователи делают несколько фотографий, а фотографии сохраняются с помощью cloudKit, а затем он удаляет приложение, но теоретически он все равно должен иметь доступ к данным через какой-то интерфейс, предоставляемый apple, я прав ?Как получить доступ к сохраненным фотографиям в CloudKit?
А вот ядро, которое я использую:
- (void) saveToiCloudImageNamed: (NSString *)imageName andTimeCreated:(NSString *)timeCreated{
CKContainer *container = [CKContainer defaultContainer];
CKDatabase *privateDatabase = [container publicCloudDatabase];
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths firstObject];
NSString *fullPath = [documentsDirectory stringByAppendingPathComponent:imageName];
NSURL *fileUrl = [[NSURL alloc] initFileURLWithPath:fullPath];
CKAsset *photoAsset = [[CKAsset alloc] initWithFileURL:fileUrl];
CKRecord *record = [[CKRecord alloc] initWithRecordType:@"Photo"];
record[@"asset"] = photoAsset;
record[@"name"] = timeCreated;
[privateDatabase saveRecord:record
completionHandler:^(CKRecord *record, NSError *error) {
if (error==nil) {
NSLog(@"The save was successful");
//Do something
}else{
NSLog(@"Error saving with localizedDescription: %@", error.localizedDescription);
NSLog(@"CKErrorCode = %lu", (long)[error code]);
if ([error code]==CKErrorNetworkFailure) {
double retryAfterValue = [[error.userInfo valueForKey:CKErrorRetryAfterKey] doubleValue];
NSLog(@"Error code network unavailable retrying after %f", retryAfterValue);
// NSTimer *timer = [NSTimer timerWithTimeInterval:retryAfterValue
// target:self
// selector:@selector(testOutCloudKit)
// userInfo:nil
// repeats:NO];
// [timer fire];
}
}
}];
}
ваша частная база данных подключается к публичной базе данных. –