Swift:从'Ride'转换为不相关的类型'NSDictionary'总是失败

时间:2015-06-28 13:04:16

标签: ios swift

我正在使用Swift 2.0构建我的第一个iOS应用程序,并且我遇到了以下错误:

  

从'Ride'转换为不相关的类型'NSDictionary'总是失败

在这一行:

if let rowData: NSDictionary = ride as? NSDictionary,

就在我的班级宣言之下,我宣布这样的游乐设施:

var rides = [Ride]()

在错误行之上,我添加了这个:

let ride = self.rides[indexPath.row]

截图:

enter image description here

我的骑行课程:

enter image description here

有人能告诉我我做错了什么以及如何解决这个问题?

2 个答案:

答案 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
...