Swift 2 Обработка многоуровневой цели C Ошибка передачи
Я использую Encrypted Core Data
и хотите проследить ошибку при инициализации. Objective C
заголовок объявляет:
+(NSPersistentStoreCoordinator *)makeStoreWithStructOptions:(EncryptedStoreOptions *) options managedObjectModel:(NSManagedObjectModel *)objModel error:(NSError * __autoreleasing*)error;
Тем не менее, соединительный заголовок Swift интерпретирует это как:
public class func makeStoreWithStructOptions(options: UnsafeMutablePointer<EncryptedStoreOptions>, managedObjectModel objModel: NSManagedObjectModel!, error: ()) throws -> NSPersistentStoreCoordinator
Обратите внимание, что он запрашивает объект типа ()
вместо NSError
,
Я попытался сделать:
var error: NSError? = nil
EncryptedStore.makeStoreWithOptions(options, managedObjectModel: myModel, error: &error)
Но это приводит к ошибке, говорящей, что тип неправильный (и не может использовать &
)
Если я вместо этого попробую (ха-ха!) Этот синтаксис, используя пустое замыкание в качестве заполнителя для его нечетного запроса:
do {
try EncryptedStore.makeStoreWithOptions(options, managedObjectModel: myModel, error: {}())
}catch{
print(error)
}
Он компилируется, но когда генерируется ошибка, она не перехватывается, хотя ECD регистрирует ошибку для меня (но это не помогает). Попытка устранить , error: {}()
из вызова функции возвращает предупреждение о том, что функция теперь не выдает, что все еще не помогает мне.
Код Objective C, который генерирует ошибку:
[persistentCoordinator addPersistentStoreWithType:EncryptedStoreType configuration:nil URL:databaseURL
options:options error:error];
if (*error)
{
NSLog(@"Unable to add persistent store.");
NSLog(@"Error: %@\n%@\n%@", *error, [*error userInfo], [*error localizedDescription]);
}
return persistentCoordinator;
Какой правильный синтаксис для фиксации ошибки в этом случае?