Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 无法转换类型为';地点';到预期的元素类型';字符串';_Arrays_Swift_Xcode - Fatal编程技术网

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] = [];