Xcode: CKAsset в CloudKit
В моем коде ниже,
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *localPath = [[paths objectAtIndex: 0] stringByAppendingPathComponent: @"temporary.png"];
NSLog(@"local path=%@", localPath);
[UIImagePNGRepresentation(self.scriptPicture.image) writeToFile:localPath atomically:YES];
//[opData.scripts writeToFile:localPath atomically:YES];
if ([[NSFileManager defaultManager] fileExistsAtPath:localPath]) {
NSLog(@"file is exist");
NSURL *fileurl=[NSURL URLWithString:localPath];
CKAsset *myfile=[[CKAsset alloc] initWithFileURL:fileurl];
//postRecrod[@"scriptPicture"]=myfile;
[postRecrod setObject:myfile forKey:@"scriptPicture"];
}
ошибка произойдет в строке "CKAsset *myfile=[[CKAsset alloc] initWithFileURL:fileurl];
"сообщение об ошибке ниже:
Завершение работы приложения из-за необработанного исключения "NSInvalidArgumentException", причина: "Не-файл URL"
Я не знаю, как решить эту проблему и искать в Интернете всю ночь напролет, но без помощи. Пожалуйста, помогите мне! Я начинающий код!
2 ответа
Вы строите свой fileurl
неправильно.
Заменить эту строку:
NSURL *fileurl=[NSURL URLWithString:localPath];
с этим:
NSURL *fileurl=[NSURL fileURLWithPath:localPath];
Всегда используйте fileURLWithPath:
метод для создания файла URL из пути к файлу. использование URLWithString:
при создании URL-адреса для строк, представляющих правильный URL-адрес, начиная со схемы (например, http:, mailto: и т. д.).
Я думаю, что ваша строка будет начинаться с file:// Не могли бы вы изменить его на что-то вроде этого:
В Свифте:
CKAsset(fileURL: NSURL(fileURLWithPath: NSBundle.mainBundle().pathForResource("temporary", ofType: "png")!))