【发布时间】:2017-06-15 12:19:17
【问题描述】:
我在 Swift 3 中有这个功能:
if let rating = product.rating as? Float {
itemRating.update(rating) //sets item rating. Number of stars
}
其中product.rating 是来自Objective C 函数的NSDecimalNumber。
我正在将所有东西都转换为 Swift。
每次我打电话给itemRating.update(rating) 都会臭名昭著:
致命错误:在展开可选值时意外发现 nil
我让它工作的唯一方法是通过这个丑陋的实现:
if let rating = product.rating as Decimal?, let floatRating = rating as? Float {
itemRating.update(floatRating) //sets item rating. Number of stars
}
总是给出警告:
从 'Decimal' 转换为不相关的类型 'Float' 总是失败。
我尝试的所有其他方式都因上述错误而失败。
这是update()的定义:
- (void)updateRating:(float)inRating;
这是怎么回事?
【问题讨论】:
-
itemRating 是如何声明的?
-
它是继承
UIImageView的自定义类型 -
如果它在
itemRating.update(rating)中崩溃,那么转换为浮点数不是问题!也许itemRating是nil? -
我尝试在
update函数中添加断点。甚至进不去update。 -
这意味着转换不是问题。你有没有三重检查
itemRating不是nil?
标签: objective-c swift optional