gpt4 book ai didi

ios - 在条件解包后解包可选时意外发现 nil

转载 作者:行者123 更新时间:2023-11-28 09:27:11 25 4
gpt4 key购买 nike

我正在使用 XCode 7.0 并正在学习 iTunesU 类(class),Stanford CS193p。该程序“Smashtag”旨在显示与搜索相关的推文。我试图自己添加一个功能来点击一条推文,它将在不同的 View Controller 中显示。 tableviewcell 类有一个变量:

    var tweet: Tweet?

tweet 类有一个用户,其中包含屏幕名称和名称,以及可选的个人资料图像的 url。在我的 TableView Controller 中,我在单击一个单元格后创建了一个 segue:

    override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if let vc = segue.destinationViewController as? ViewController{
if let identifier = segue.identifier{
if identifier == "showTweet"{
if let selectedTweet = sender as? TweetTableViewCell{
vc.tweetToDisplay = selectedTweet.tweet!
}
}
}
}

然后在我的另一个 View Controller 中,我有一个不同的线程:

self.profileImage.image = UIImage(data: imageData)
self.tweetMedia.image = UIImage(data: mediaData)
self.userName.text = "\(tweetToDisplay.user.name)"
self.userScreenName.text = "\(tweetToDisplay.user.screenName)"
if let body = tweetToDisplay.text{
self.tweetBody.text = body
}

userName、userScreenName、profileImage 和 tweetMedia 都加载到 View Controller 上;但是,tweetBody 给出了标题中的错误并使程序崩溃。我已经尝试使用 tweetBody 进行可选链接;但是,tweetBody 不会显示。感谢您的帮助。

最佳答案

我已经为这个问题苦苦挣扎了几个小时。对我有用的是将 View Controller 之间的数据交换存储在单独的变量中。以下是对我有用的解决方案。希望对您有所帮助。

而不是 -

 override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if let vc = segue.destinationViewController as? ViewController{
if let identifier = segue.identifier{
if identifier == "showTweet"{
if let selectedTweet = sender as? TweetTableViewCell{
vc.tweetToDisplay = selectedTweet.tweet!
}
}
}
}

尝试 -

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if let vc = segue.destinationViewController as? ViewController{
if let identifier = segue.identifier{
if identifier == "showTweet"{
if let selectedTweet = sender as? TweetTableViewCell{
guard let tweetText = selectedTweet.tweet! else {
return
}
vc.tweetToDisplayText = tweetText
}
}
}
}

在您的其他 View Controller 中声明一个字符串变量 -

var tweetToDisplayText:String?

最后在viewDidLoad:方法中添加-

tweetToDisplay.text = tweetToDisplayText

关于ios - 在条件解包后解包可选时意外发现 nil,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35775306/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com