2016-09-08 6 views
-1

Wenn Sie versuchen, Bilder zum Array hinzuzufügen, müssen Sie vier Arrays zu einem Array zusammenführen. Was ich zu tun versucht, ist:So fügen Sie Bilder im Array hinzu

var arrFiltersImagesList : NSMutableArray = [] 
var arrRoomInfoImages = Array<UIImage>() 
var arrPropertyInfoImages = Array<UIImage>() 
var arrAvailabilityImages = Array<UIImage>() 
var arrPreferencesImages = Array<UIImage>() 

arrRoomInfoImages += [UIImage(named: "ic_roomType_small.png")!, UIImage(named: "ic_furnished_small.png")!, UIImage(named: "ic_numberBedrooms_small.png")!] 

    arrPropertyInfoImages += [UIImage(named: "ic_small.png")!, UIImage(named: "ic_propertyType_small.png")!, UIImage(named: "ic_numberBedrooms_small.png")!, UIImage(named: "ic_numberBathrooms_small.png")!, UIImage(named: "ic_amenities Copy_small.png")!] 

    arrAvailabilityImages += [UIImage(named: "ic_roomType_small.png")!, UIImage(named: "ic_furnished_small.png")!, UIImage(named: "ic_ensuite_small.png")!] 

    arrPreferencesImages += [UIImage(named: "ic_roomType_small.png")!, UIImage(named: "ic_furnished_small.png")!, UIImage(named: "ic_ensuite_small.png")!] 

arrFiltersImagesList.addObject(arrRoomInfoImages) 
    arrFiltersImagesList.addObject(arrPropertyInfoImages) 
    arrFiltersImagesList.addObject(arrAvailabilityImages) 
    arrFiltersImagesList.addObject(arrPreferencesImages) 

dieses link Gefolgt aber nicht bei allen Ausgabe gearbeitet ist schrecklich. Bitte führen Sie den richtigen Weg. Dank

+0

durch merge meinst du das letzte Array enthält die 4 Arrays oder enthält das Element der 4 Arrays? – Tj3n

+0

enthält 4 Arrays, weil das Array an die Tabellenansicht übergeben werden muss. –

Antwort

3

ich es eher durch den Aufbau Ihre Arrays in ein let Variable tun würde, als eine var Variable, unter Ausnutzung von Swift Fähigkeit, die Art zu folgern:

import UIKit 

let arrRoomInfoImages = [ 
    UIImage(named: "ic_roomType_small.png"), 
    UIImage(named: "ic_furnished_small.png"), 
    UIImage(named: "ic_numberBedrooms_small.png")].flatMap { $0 } 

let arrPropertyInfoImages = [ 
    UIImage(named: "ic_small.png"), 
    UIImage(named: "ic_propertyType_small.png"), 
    UIImage(named: "ic_numberBedrooms_small.png"), 
    UIImage(named: "ic_numberBathrooms_small.png"), 
    UIImage(named: "ic_amenities Copy_small.png")].flatMap { $0 } 

let arrAvailabilityImages = [ 
    UIImage(named: "ic_roomType_small.png"), 
    UIImage(named: "ic_furnished_small.png"), 
    UIImage(named: "ic_ensuite_small.png")].flatMap { $0 } 

let arrPreferencesImages = [ 
    UIImage(named: "ic_roomType_small.png"), 
    UIImage(named: "ic_furnished_small.png"), 
    UIImage(named: "ic_ensuite_small.png")].flatMap { $0 } 

let arrFiltersImagesList = [ 
    arrRoomInfoImages, 
    arrPropertyInfoImages, 
    arrAvailabilityImages, 
    arrPreferencesImages] 

Bitte beachte, dass ich nicht zwang Abwickeln die Rückgabewerte der init Methoden. Stattdessen benutze ich flatMap, um alle nil Werte in den Arrays zu entfernen. Dies ist eine schnelle Methode, um Fehler beim Laden Ihrer Bilder zu beheben. Sie können etwas komplizierteres tun, um sicherzustellen, dass alle nicht geladenen Bilder korrekt verarbeitet werden.

+0

Warum "flatMap" Sie die Arrays? Es sollte keine Auswirkungen auf eindimensionale Arrays haben. – Losiowaty

+1

Zusätzlich zur Reduzierung der Dimension eines Arrays, 'flatMap' wird auch [nil' Werte aus einem Array von' Optional' Werten entfernen] (https://www.natashatherobot.com/swift-2-flatmap/) . Ich benutze es für diesen Effekt. – ColGraff

+0

Ah richtig! Ich vergesse diesen Aspekt immer wieder. Gute Sache, danke! – Losiowaty

Verwandte Themen