2016-09-21 6 views
0

プロジェクトをSwift 3に変換しました。次のコードに問題があります。これはSwift 3では使用されていないようです。>>> - 実際にはどういう意味ですか? Swift 3での使用方法は?スイフト3 - これはどういう意味ですか?

fileprivate func addImageToView(_ view: UIView, image: UIImage?) -> UIImageView? { 
guard let image = image else { return nil } 

let imageView = Init(UIImageView(image: image)) { 
    $0.translatesAutoresizingMaskIntoConstraints = false 
    $0.alpha = 0 
} 
view.addSubview(imageView) 

// add constraints 
[NSLayoutAttribute.left, .right, .top, .bottom].forEach { attribute in 
    (view, imageView) >>>- { $0.attribute = attribute } 
} 
imageView.layoutIfNeeded() 

return imageView 

}

+0

これはビューの制約で動作するカスタム演算子です。[Constraint +](https://github.com/xhamr/fave-button/blob/master/Source/Helpers/Constraints%2B.swift)と同じです。 )が、エラーは何ですか? – xhamr

+0

こんにちは@ xhamrエラーは演算子の結果は使用されていません - それはSwift 3の後に表示され始めました、どうすれば修正できますか? – rrdev

+0

オペレータがいるライブラリの作者は、結果として使用されない関数のswift3に準拠するためにメソッドを '@ discardableResult'とマークする必要があります。 – xhamr

答えて

0

>>>-戻り値。 Swift 3より前に、関数やメソッドの戻り値を何かに割り当てなかった場合、コンパイラは警告しませんでした。 Swift 3から、関数またはメソッド(演算子を含む)の戻り値が使用されていない場合、エラーが発生します。ライブラリの作者は@discardableResult注釈を追加することによってこの問題を解決することができますが、その間に、あなたはにコード行を変更する必要があります:この答えはあなたの側で問題を解決することができるという事実にもかかわらず

let _ = (view, imageView) >>>- { $0.attribute = attribute } 
+0

ありがとう@mipadi! [NSLayoutAttribute.left、.right、.top、.bottom] .forEach { のアトリビュートに_ =(ビュー、イメージビュー)>>> - {$ 0。 (UIView、UIImageView)の値を '(_、_)の予想される引数型に変換できません' – rrdev

+0

@aaghanim:返り値が返された場合は、あなたはおそらく 'let(_、_)= ...'が必要です – mipadi

0

、まだそこに彼の側にいくつかの変更を加えるために図書館の著者に必要があります。

問題は、迅速に機能パラメータからvarを削除したため、その変更が閉鎖で受け取っているパラメータに何らかの影響を与えているためです。 (私にとってはバグだと思う)。図書館がオペレータクロージャに渡しているinoutパラメータのタイプを調べ、それをinoutと宣言する必要があります。

(view, imageView) >>>- { (i : inout Constraint) in 
    i.attribute = attribute 
} 

しかし、再び、著者はまだだけでなく、オペレータの実装にいくつかの変更を行う必要があります:のは、あなたの上に、(これはライブラリと同じではないかもしれません)、その型がConstraintあるとしましょう。

+0

ありがとう、@ xhamr!私はこのようにエラーを取り除きましたが、アプリはまだ動作しません:(クラッシュクラス – rrdev

関連する問題