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;

Какой правильный синтаксис для фиксации ошибки в этом случае?

0 ответов

Другие вопросы по тегам