2016-12-23 1 views
0

Ich habe einen struct Namen und Bildnamen von Bildern zu speichern, die in App bereits gebündelt werden alsWie ersetzt man den String-Namen einer Struktur durch den entsprechenden Image-Namen?

struct City { var name: String 
       var imageName: String } 

class firstViewController: UIViewController 

let cities = [City(name:"City00", imageName:"city_00"), 
       City(name:"City01", imageName:"city_01"), 
       City(name:"City02", imageName:"city_02")] 

In displayViewController folgt, ich habe eine Variable nowCityImages Daten von firstViewcontroller ausgewählt speichern

class displayViewController: UIViewController, UITableViewDataSource, UITableViewDelegate, NSFetchedResultsControllerDelegate { 

var nowCityImages: [String] = [] 

jetzt möchte ich Bild der Stadt in Tableview angezeigt

public func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell 
{ 
    let myCell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) as! CityCell 

    let outCityImages = nowCityImages[indexPath.item] 

    // This is not displaying any images 
    myCell.cityImage.image = UIImage(named:outCityImages) 

    return myCell 
} 

Wenn ichverwenden, erhalte ich folgende Ausgabe

City00 
City02 

als

ausgenommen, aber ich weiß nicht, wie City00 with city_00 und City02 with city_02 in Tableview Zelle zu ersetzen, so dass sie das Bild anzeigt.

+0

Dies kann Ihnen helfen: http://stackoverflow.com/questions/25665122/how-to-search-an-array-containing-struct-elements-in-swift –

+0

@JimmyJames, diese Frage ist für die Suche, ich bin auf der Suche nach Ersatz – leaner122

+1

Überprüfen Sie die Anweisung, wo Sie Strings zu nowCityImages hinzufügen oder anhängen. Es sollte city.imageName nicht city.name ähnlich sein. z.B. nowCityImages.append (cities [0] .imageName) – bunty

Antwort

0

wenn die Zahl am Ende ist 2-stellige Länge:

var str = "City00" 
let index = str.index(str.endIndex, offsetBy: -2) 

var str1 = str.substring(to: index).lowercased() 
var str2 = str.substring(from: index) 
let name = "\(str1)_\(str2)" //city_00 
+0

Das ist nicht immer der Fall, ich habe nur ein Beispiel gegeben, um mein Problem zu beschreiben. Ich möchte wissen, wie man die entsprechenden Namen von Städten mit ihren Bildnamen ersetzt. – leaner122

+1

In displayViewController gibt es nur den Namen der Stadt. Ich denke, Sie könnten City Objekt/imageName an displayViewController statt nur den Namen der Stadt übergeben oder erstellen Sie eine Methode, um Stadt Objekt nach Stadt Name zu bekommen. – Horst

+0

tatsächlich löste das Problem – leaner122

0

Können Sie Code des Erhaltens nowCityImages ändern zu diesem

var nowCityImages: [String] = cities.filter(){$0.imageName} 

Jetzt wird es Bildnamen zurück, wie Sie wollen.

Verwandte Themen