2017-10-07 7 views
-5

次のラベルの「オプション」ラベルを削除できないようです。私はさまざまなリソースを見てきましたが、実装すべきものを特定できませんでした。私が間違っている場所を教えてください。オプションの文字列 - コントローラを表示

Cannot get rid of "Optional" label.

class RatingViewController: UIViewController { 



@IBOutlet weak var rateLabel: UILabel! 
@IBOutlet weak var rateView: EmojiRateView! 


var ServicePoint: String! 

var ref:DatabaseReference? 


let ratingTexts = [NSLocalizedString("Çok Kötü", value:"Very Bad", comment: ""), NSLocalizedString("Kötü", value:"Bad", comment:""), NSLocalizedString("Normal", value:"Normal", comment:""), NSLocalizedString("İyi", value:"Good", comment:""), NSLocalizedString("Çok iyi", value:"Very good", comment:""), NSLocalizedString("Mükemmel", value:"Perfect", comment:"")] 


var newRateSyting = String("%.2f, %@")! 



override func viewDidLoad() { 
    super.viewDidLoad() 


    rateView.rateValueChangeCallback = {(rateValue: Float!) -> Void in 

     self.rateLabel?.text = String(format: self.newRateSyting, rateValue, self.ratingTexts[Int(rateValue)]) 

} 

}

+1

アップルのスウィフト本で「オプション」を参照すると、回答が得られます(さらに多くの情報が得られます)。 – dasdom

+0

"!"値の最後に印を付けてください** **他の賢明な方法ではありませんか? ""値が見つかりません "" – iPatel

+0

あなたの場合はあなたの変数に名前をつけてください。 'ServicePoint'は小文字で始まります。 '。必須ではありませんが、あなたの人生を楽にします。 –

答えて

0

アンラップする

let value : String? = "4.7" 
let review : String? = "very good" 

let strRate = "\(value), \(review)" 

print("Before unwrap") 

print(strRate) 

print("\n After unwrap") 
let strRate2 = "\(value!), \(review!)" 
print(strRate2) 
let strRating = "\(self.newRateSyting!)\(rateValue!)\(self.ratingTexts[Int(rateValue)]!)" 
self.rateLabel?.text = strRating 

例に従ったように行います出力:

enter image description here

注:その後、

あなたは辞書配列、配列配列、辞書辞書、配列辞書を持っている場合は、あなたは以下のようにアンラップする必要があります:

(arr[index]["key"])! , (arr[index][index])!, (arr["key"]["key"])!, (arr["key"][index])! 

どのくらいの配列やdictが複雑であるかは関係ありません。常に上記に従ってください。

疑問が残っている場合は、質問することができます。

+0

'String(format :, ...)'はオプションではありません。 –

+0

@MartinR今すぐOKです。しかし、 'String(format:、..)'を使用するたびに、xcodeは警告を避けるためにこれを使用し、常にオプションを返します。私はどこに間違っているか教えてくれますか? –

+0

https://developer.apple.com/documentation/swift/string/1417691-initはオプションではありません。実際、提供されたコードでOPの問題を再現することはできません。だから私は何かを見落としているか、またはOPが実際のコードを表示していない。 –