Arrays 无法转换类型为';地点';到预期的元素类型';字符串';
我在尝试向数组传递信息时遇到问题。但我不确定问题出在哪里。这是我的密码。我试图在用户点击这些城市时显示这些城市的图像和信息Arrays 无法转换类型为';地点';到预期的元素类型';字符串';,arrays,swift,xcode,Arrays,Swift,Xcode,我在尝试向数组传递信息时遇到问题。但我不确定问题出在哪里。这是我的密码。我试图在用户点击这些城市时显示这些城市的图像和信息 var locations : [String]! = []; override func viewDidLoad() { super.viewDidLoad() let locationDescriptions = buildDescriptions() let parisImage = UIImage(named: "paris.
var locations : [String]! = [];
override func viewDidLoad() {
super.viewDidLoad()
let locationDescriptions = buildDescriptions()
let parisImage = UIImage(named: "paris.jpg");
let londonImage = UIImage(named: "london.jpg");
let barcelonaImage = UIImage(named: "barcelona.jpg");
let mauiImage = UIImage(named: "maui.jpg")!;
let newYorkImage = UIImage(named: "new_york.jpg");
let sanFranciscoImage = UIImage(named: "san_francisco.jpg");
let paris = Location(name: "Paris", image: parisImage!, description: locationDescriptions["Paris"]!);
let london = Location(name: "London", image: londonImage!, description: locationDescriptions["london"]!);
let barcelona = Location(name: "Barcelona", image: barcelonaImage!, description: locationDescriptions["Barcelona"]!);
let maui = Location(name: "Maui", image: mauiImage, description: locationDescriptions["Maui"]!);
let newYork = Location(name: "New York", image: newYorkImage!, description: locationDescriptions["New York"]!);
let sanFrancisco = Location(name: "San Francisco", image: sanFranciscoImage!, description: locationDescriptions["San Francisco"]!);
// This is where the error shows
locations = [paris, london, barcelona, maui, newYork, sanFrancisco];
}
问题是您正在将类型为
Location
的值添加到应包含字符串的数组中
这将解决问题
locations = [paris.name, london.name, barcelona.name, maui, newYork.name, sanFrancisco.name]
问题是您将位置
定义为字符串
s的数组,而不是位置
s。换掉这一行:
var locations : [String]! = [];
与
这将修复类型错误。为什么位置
被注释为[String]代码>?您给它一个初始值,因此它应该是非可选的,并且您试图为它分配一个[Location]
,因此它(可能)应该是[Location]
。顺便说一句,你也不需要在行尾使用分号。
var locations : [Location] = [];