可选字符串 - 视图控制器
我似乎无法摆脱下面的标签中的“可选”标签。我查看了不同的资源,但无法弄清楚要实施什么。你能告诉我我错在哪里吗?可选字符串 - 视图控制器
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)])
}
}
解开做如下
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)
输出:
注:
如果你有阵列字典的,阵列阵列的,字典字典的,字典阵列,则你必须打开如下:
(arr[index]["key"])! , (arr[index][index])!, (arr["key"]["key"])!, (arr["key"][index])!
无论多少数组或字典都很复杂,总是遵循上面的说法。
如果你还有疑问,那么你可以问。
'字符串(格式:,...)'不*返回一个可选项。 –
@MartinR希望它现在好了。但是,无论何时我使用'String(format:,..)',xcode都会使用它来避免警告,并且它总是返回可选项。你能否向我解释我错在哪里? –
https://developer.apple.com/documentation/swift/string/1417691-init不会返回一个可选的,实际上我不能用所提供的代码重现OP的问题。所以要么我忽略了某些东西,要么OP没有显示真正的代码。 –
在Apple的Swift书籍中查找“Optionals”,你会得到答案(还有更多)。 – dasdom
设置“!”标记在值的末尾确保值不会是**零**其他方面您可以使用“??”未找到值“” – iPatel
并命名变量,在您的案例中'ServicePoint'以小写字母开头'servicePoint '。不是必须的,但会让你的生活更轻松。 –