2015-11-26 3 views
0

Я перехожу к Swift 2.1, некому код, который управлял устойчивостью CoreData. Хотя я получаю странную ошибку, говоря мне, что я не могу бросить NSMutableDictionnary к [String: AnyObject] что-то я не понимаю,Невозможно передать NSMutableDictionnary как [String: AnyObject]

do { 
    try coordinator!.addPersistentStoreWithType(NSSQLiteStoreType, 
     configuration: nil, URL: url, options: options) 
} catch var providedError as NSError { 
    coordinator = nil 
    // Report any error we got. 
    let dict = NSMutableDictionary() 
    dict[NSLocalizedDescriptionKey] = "Failed to initialize the application's saved data" 
    dict[NSLocalizedFailureReasonErrorKey] = failureReason 
    dict[NSUnderlyingErrorKey] = providedError 

    let error = NSError(domain: "SOME_ERROR_DOMAIN", code: 9999, 
     userInfo: dict as! [String : AnyObject]) // <--- HERE IS THE WARNING 
} catch { 
    fatalError() 
} 

предупреждающее сообщение:

Cast from 'NSMutableDictionary' to unrelated type '[String : AnyObject]' always fails

я обойти это путем используя непосредственно Swift Dictionnary, но я хотел бы получить причину такой проблемы.

ответ

0

Просто используйте код, предложенный Apple в шаблоне основных данных.

let dict = [String: AnyObject]() 
dict[NSLocalizedDescriptionKey] = "Failed to initialize the application's saved data" 
dict[NSLocalizedFailureReasonErrorKey] = failureReason 
dict[NSUnderlyingErrorKey] = providedError 

let error = NSError(domain: "SOME_ERROR_DOMAIN", code: 9999, userInfo: dict) 

Тип является [String: AnyObject] и поскольку тип не является необязательным нет никакой необходимости, чтобы бросить его.

Причина в том, что изменяемые типы коллекций NSMutableArray и NSMutableDictionary не соединяются автоматически с Swift-коллегами.

+0

Если вы прочитали вопрос, вы бы заметили это предложение: «Я обходю это, используя непосредственно Swift Dictionnary, но я хотел бы получить причину такой проблемы». – AsTeR

+0

@AsTeR Я не думаю, что вы получите большую помощь, чтобы быть настолько острой с людьми. – trojanfoe

+0

Я добавил причину. – vadian

Смежные вопросы