2016-09-30 16 views
0

SwiftAlertViewクラス(https://github.com/dinhquan/SwiftAlertView)を使用し、Swiftを2.3から3に更新しました。
私が遵守したとき、アプリケーションと私は次のようなエラーメッセージを発見しました。iOS - Swift 3 - SwiftAlertView - オプションタイプ

Binary operator '+' cannot be applied to operands of type 'Double' and 'Double!' 

コードは次のとおりです。
titleTopMarginとtitleToMessageSpacingはDoubleです!
Double(titleLabel.frame.size.height)を追加できません。

let topPartHeight = (contentView == nil) ? (titleTopMargin + Double(titleLabel.frame.size.height) + titleToMessageSpacing + Double(messageLabel.frame.size.height) + messageBottomMargin) : Double(contentView!.frame.size.height) 

定義は次のとおりです。

// customize the margin & spacing of title & message 
open var titleSideMargin: Double! // default is 20 px 
open var messageSideMargin: Double! // default is 20 px 
open var titleTopMargin: Double! // default is 20 px 
open var messageBottomMargin: Double! // default is 20 px 
open var titleToMessageSpacing: Double! // default is 10 px 

この問題を解決するにはどうすればよいですか?

ありがとうございます。

+1

「titleTopMargin」、「titleToMessageSpacing」、および「messageBottomMargin」の定義場所を教えてください。問題は、これらのうちの1つ(またはそれ以上)が暗黙的にアンラップされている可能性があります。 –

+0

この問題は、http://stackoverflow.com/questions/39251005/strange-generic-function-appear-in-view-controller-after-converting-to-swift-3 – vadian

+2

'open var titleSideMargin:Double = 20.0に関連しています' –

答えて

0

のUIKitCoreGraphics常にサイズのためCGFloatを使用し、彼らはDouble型に使用することはありません。だから私はCGFloatここに使うべきだと思います。

0

@Rahulの回答とまったく同じです。だから、CGFloatにタイプを設定します。私の提案を与えるために皆

var titleSideMargin: CGFloat = 20.0 
var messageSideMargin: CGFloat = 20.0 
var titleTopMargin: CGFloat = 20.0 
var messageBottomMargin: CGFloat = 20.0 
var titleToMessageSpacing: CGFloat = 10.0 

let topPartHeight = (contentView == nil) ? (titleTopMargin + titleLabel.frame.size.height + titleToMessageSpacing + messageLabel.frame.size.height + messageBottomMargin) : contentView!.frame.size.height 
1

感謝を。

これらの変数は、まだDoubleを使用する必要があります。だから私は次のコードを更新する必要があります。

open var titleSideMargin: Double = 20.0 
open var messageSideMargin: Double = 20.0 
open var titleTopMargin: Double = 20.0 
open var messageBottomMargin: Double = 20.0 
open var titleToMessageSpacing: Double = 10.0 
関連する問題