2014-10-21 4 views
3

После обновления Xcode до 6.1 я получаю пару ошибок компилятора для моего существующего проекта.XCode 6.1 NSString.boundingRectWithSize Ошибка компиляции

я определил атрибуты как

let styleAttriutes = [ 
    NSFontAttributeName : UIFont(...), 
    NSForgeroundColorAttributeName : UIColor.blackColor() 
] 

Ошибка: «Не удалось найти перегрузку„инициализации“, который принимает переданные аргументы»

Поэтому я объявил INFERRED словарь явное добавление : [ NSString: Any], поскольку все ключевые константы имеют тип NSString, и мы имеем разные значения: UIFont/UIColor и AnyObject также не допускается.

let styleAttriutes : [NSString : Any] = [ ... 

Теперь компилятор счастлив в этом пункте.

Определенная attribues используются в

text.boundingRectWithSize(size: CGSize, options: NSStringDrawingOptions, attributes: [NSObject : AnyObject!], context: NSStringDrawingContext!) 

Поскольку атрибуты типа [NSObject:AnyObject!], как ожидается, но я передаю attribues типа [NSString : Any] компилятор жалуется:

Ошибка: «NSString" не идентичный «NSObject» «

Я попытался использовать его, используя attributes as [NSObject : AnyObject], но затем получаю ошибку времени выполнения.

Неустранимая ошибка: «Невозможно небезопасноBitCast между типами разностей размеров».

Любые предложения?

ответ

5

Я думаю, вы используете метод UIFontinit, который возвращает необязательный (то есть может возвращать nil) с Xcode 6.1.

Так что попробуйте заменить UIFont(...) на UIFont(...)!.

+0

Принято! Ты герой! Благодарю. – David

+0

Боже, это так запутанно. Компилятор сообщает о таких смешных ошибках! Благодаря! – Andy