类型 '[Class]?' 没有成员'[Variable]'



我正在尝试为iOS构建一个电影存档应用程序。但当我试图使用我在另一个控制器中定义的类时,我会遇到这个错误。

键入"电影?"没有成员"名称">


我有4个控制器文件;

  • 电影列表VC
  • movieDetailVC
  • movieAddVC


和2.swift文件;

  • 文件
  • 电影(这是我为类定义的文件(

Movie.swift:

class Movie: NSObject {
var name : String
var director : String
var year : String
var posterURL : String
override init(){
self.name = ""
self.director = ""
self.year = ""
self.posterURL = ""
}
}


当我像应该的那样使用movieListVC时,我可以到达我的班级。


movieListVC:

var selectedMovie : Movie?
.
.
.
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
self.selectedMovie = Movie()
let temp = self.movies[indexPath.row] as! Dictionary<String, AnyObject>
selectedMovie!.name = temp["name"]! as! String
selectedMovie!.director = temp["director"] as! String
selectedMovie!.year = temp["year"] as! String
selectedMovie!.posterURL = temp["posterURL"] as! String
self.performSegue(withIdentifier: "detail", sender: self)
let movieName = temp["name"] as! String
print("Name of the selected movie: (movieName)")
}


Xcode不会为我的movieListVC提供任何错误,但当我在movieDetailVC中使用相同的东西时,它会给我错误。


移动详细信息VC:

var movieToShow : Movie?                             // Expected member name or constructor call after type name
.
.
.
override func viewDidLoad() {
super.viewDidLoad()
if (self.movieToShow == nil) {
return;
}
labelMovieName.text = movieToShow!.name           // Type 'Movie?' has no member 'name'
labelMovieDirector.text = movieToShow!.director   // Type 'Movie?' has no member 'name'
labelMovieYear.text = movieToShow!.year           // Type 'Movie?' has no member 'name'
let image = UIImage(data: try! Data(contentsOf: 
URL(string: movieToShow!.posterURL)))   // Type 'Movie?' has no member 'name'
imageViewPoster.image = image
}



编辑1:我也在这里使用movieToShow获取信息:

override func prepare(for segue: UIStoryboardSegue?, sender: Any!) {
if segue!.identifier == "detail" {
let viewController:movieDetailViewController = segue!.destination as! movieDetailViewController
viewController.movieToShow = self.selectedMovie
}
}

movieDetailVC中,

labelMovieName.text = movieToShow!.name.          // Type 'Movie?' has no member 'name'

在上一行中,您在name之后使用了一个额外的.。把它取下来。

最新更新