【问题标题】:Optional String - View Controller可选字符串 - 视图控制器
【发布时间】:2017-10-07 09:20:11
【问题描述】:

我似乎无法摆脱以下标签中的“可选”标签。我查看了不同的资源,但无法弄清楚要实施什么。你能告诉我我错在哪里吗?

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)])

}

}

【问题讨论】:

  • 在 Apple 的 Swift 书中查找“Optionals”,您会得到答案(以及更多)。
  • 设置“!”在值末尾标记确保值不会为 nil 否则您可以使用 "?? "Value not found""
  • 并命名你的变量,在你的情况下ServicePoint以小写servicePoint开头。不是必须的,但会让您的生活更轻松。
  • 我无法重现您的问题。 print(self.ratingTexts[Int(rateValue)]) 显示什么?

标签: ios swift


【解决方案1】:

解包如下

let strRating =  "\(self.newRateSyting!)\(rateValue!)\(self.ratingTexts[Int(rateValue)]!)"
self.rateLabel?.text = strRating

示例

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)

输出:

注意:

如果你有 dict 数组数组数组dict 数组dict,然后你必须像下面这样打开:

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

无论数组或字典有多复杂,请始终遵循上述内容。

如果你还有疑问,可以问。

【讨论】:

  • String(format:, ...) not 返回一个可选项。
  • @MartinR 希望现在可以了。但是每当我使用String(format:,..) 时,xcode 都会使用它来避免警告并且它总是返回可选的。你能解释一下我哪里错了吗?
  • developer.apple.com/documentation/swift/string/1417691-init 不返回可选项,实际上我无法使用提供的代码重现 OP 的问题。所以要么我忽略了一些东西,要么 OP 没有显示真实的代码。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-02
  • 1970-01-01
  • 2012-06-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多