ios - 从prepare segue获取数据后将值字典添加到标签
问题描述
在准备 segue 中,我将数据添加到另一个控制器中的字典中,这是该字典:
var data = [String:String]()
在准备 segue 中,我向字典添加值和键
movieDetail.data.updateValue("title", forKey: self.animationItems[index!].snippet.title)
movieDetail.data.updateValue("description", forKey: self.animationItems[index!].snippet.description)
这样对吗?
然后,在新的控制器中有一个插座:
@IBOutlet weak var movieTitle: UILabel!
这个标题应该得到字典的值(标题)
我这样做了:
override func viewDidLoad() {
super.viewDidLoad()
movieTitle.text = data[title]?
}
但它显示一个错误:
无法使用“字符串”类型的索引为“[字符串:字符串]”类型的值下标?
你能帮我解决这个问题吗?
解决方案
它应该是:
override func viewDidLoad() {
super.viewDidLoad()
movieTitle.text = data["title"]
}
您应该添加""
来表示字符串文字。
你prepareForSegue
的也是错的。的两个论点updateValue
是相反的。为避免混淆,您应该始终使用以下dict[key] = value
语法:
movieDetail.data["title"] = self.animationItems[index!].snippet.title
movieDetail.data["description"] = self.animationItems[index!].snippet.description
无论如何,您应该使用类/结构来表示您的电影,然后这些问题就会消失。
struct Movie {
var title: String
var description: String
}
// in MovieDetailController
var movie: Movie!
// in prepareForSegue
movieDetail.movie = Movie(title: self.animationItems[index!].snippet.title, description: self.animationItems[index!].snippet.description)
// in viewDidLoad
movieTitle.text = movie.title
推荐阅读
- c++ - 使用 clog 计算复数的自然对数时,如何解决出现的歧义?
- php - 如何从表中 1 正确的 2 个值中 INNER JOIN 正确的 VALUE
- python - UnboundLocalError:分配前引用的局部变量“totalp”
- kubernetes - Kubernetes 服务如何在内部平衡负载?
- regex - 使用 Perl 拆分函数解析 html 注释
- reactjs - React TypeScript 高阶组件类型
- c# - 如何用预制件替换 GameObject 并将所有组件和组件属性设置添加到预制件中?
- kubernetes - GKE Kubernetes RBAC 将默认角色绑定到我的有限自定义
- python-3.x - 浮点算术 - 指数的位
- javascript - 检查两个数组中有多少个变量是相同的