2016-07-28 8 views
-1

情報を配列に渡そうとしているときに問題があります。しかし、私は問題が何であるか分かりません。これは私のコードです。私はこれらの特定の都市からの画像や情報をユーザーがクリックするたびに表示しようとしています。タイプ 'Location'の値を期待されるエレメントタイプ 'String'に変換できません

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

} 
+1

'' [場所]は[[文字列]! 'として注釈されているのはなぜですか?あなたは初期値を与えるので、これはオプションではなく、 '[Location]'を代入しようとしているので、(おそらく) '[Location]'にする必要があります。 Btwでは、行末にセミコロンを使用する必要もありません。 – Hamish

答えて

1

問題を解決します。

var locations : [Location] = []; 

var locations : [String]! = []; 

そして、これは型エラーを修正する必要があります。ただ、この行を入れ替えます。

+1

これはうまくいきました、ありがとうございました:) – art3mis

+0

よろしくお願いします! –

0

問題は、あなたがStringが含まれている必要があり、アレイにタイプLocationの値を追加しているということです。

これは、問題は、あなたがString秒、ないLocationの配列としてlocationsを定義したということです

locations = [paris.name, london.name, barcelona.name, maui, newYork.name, sanFrancisco.name] 
関連する問題