我正在使用Swift 2.0构建我的第一个iOS应用程序,并且我遇到了以下错误:
从'Ride'转换为不相关的类型'NSDictionary'总是失败
在这一行:
if let rowData: NSDictionary = ride as? NSDictionary,
就在我的班级宣言之下,我宣布这样的游乐设施:
var rides = [Ride]()
在错误行之上,我添加了这个:
let ride = self.rides[indexPath.row]
截图:
我的骑行课程:
有人能告诉我我做错了什么以及如何解决这个问题?
答案 0 :(得分:1)
刚刚施放到正确的类型:骑
if let rowData = ride as? Ride,
但是因为数据源被定义为Ride,所以
根本不需要这个检查修改强>
Ride的属性都声明为非可选类型,因此您无需检查nil。这是Swift语言的巨大好处
答案 1 :(得分:1)
struct Ride
不是NSDictionary
的子类型。它们是完全不同的概念。
因此,施法if let rowData: NSDictionary = ride as? NSDictionary
总是失败。
由于rides
的类型为[Ride]
,let ride = rides[indexPath.row]
的类型为Ride
。
不需要可选的展开。直接使用属性(名称,状态,...)。
所以,我认为代码应该是这样的。
let ride = rides[indexPath.row]
dataFull = ride.name
dataState = ride.state
dataUrlString = ride.image
...