我有一个带有集合视图的视图控制器,当我点击集合视图的单元格时,我想要进入一个控制器,该控制器包含我单击的单元格的用户所有的帖子。
var posts = NSMutableArray()
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "UsersProfile" {
let vc = segue.destination as! UsersProfileViewController
let postsForUser = posts.filter {
guard let post = $0 as? [String : Any] else {
return false
}
return post["username"] as? String == selectedUserName
}
print("postForUser = \(postsForUser)")
vc.posts = postsForUser as! NSMutableArray
}
}
当我使用xcode 8时,它工作得非常好,当我更新到xcode 9时,当我点击单元格时它会崩溃,我不确定如何识别xcode 9中的问题。
答案 0 :(得分:1)
邮件字典包含值&#34;用户名&#34; key是一个String类型,因此过滤器将返回val imageView: ImageView = findViewById<ImageView>("R.id.imageView_" + index) as ImageView
或[[String:Any]]的数组,而不是NSMutableArray。另外Dictionary<String, Any>
是Objective-C集合类型,不在Swift中使用。所以ProfileViewController中的帖子应该是NSMutableArray
[[String: Any]]
答案 1 :(得分:0)
postsForUser的类型为[Any](即数组)。它不是NSMutableArray。你强迫一个强制转换为NSMutableArray,因为它必须崩溃。
所以想想你对postsForUser真正想要什么类型并保持一致。另外,避免使用as!因为它只是要求崩溃。它只适用于非常狭窄的情况。