我剛剛更新到Xcode 9,並將我的應用程序從swift 3轉換爲swift 4. 我有使用字符串標記軸和其他變量的圖形。 所以我有一個moneyAxisString =「錢」。 以前我能夠使用這個代碼繪製它們:Swift 4無法轉換類型'[String:AnyObject]'的值?'到期望的參數類型'[NSAttributedStringKey:Any]?'
moneyAxisString.draw(in: CGRect(x: CGFloat(coordinateXOriginLT + axisLength/3), y: CGFloat(coordinateYOriginRT + axisLength + 5 * unitDim), width: CGFloat(300 * unitDim), height: CGFloat(100 * unitDim)), withAttributes: attributes as? [String : AnyObject])
凡屬性是定義字典如下
attributes = [
NSAttributedStringKey.foregroundColor: fieldColor,
NSAttributedStringKey.font: fieldFont!,
NSAttributedStringKey.paragraphStyle: style
]
現在我的應用程序將無法編譯,我得到消息:
無法轉換類型'[String:AnyObject]?'的值到期望的參數類型'[NSAttributedStringKey:Any]?'
當我刪除downcast我得到:無法將類型'NSDictionary'的值轉換爲期望的參數類型'[NSAttributedStringKey:Any]?'然後它說:插入'as! [NSAttributedStringKey:Any]'。此外,當我縮短屬性的代碼時,它說「表達式解析爲一個未使用的l值」和「預期表達式」和「連續的語句在一行上必須用';'隔開,插入」;「。我最初定義的屬性爲:var attributes:NSDictionary = [:] –
聲明'var attributes = [NSAttributedStringKey:Any]()'而不是'NSDictionary',那麼你甚至可以刪除註釋。不要在'NSDictionary'中使用無論如何Swift。 – vadian