我正在尝试为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
之后使用了一个额外的.
。把它取下来。