2016-09-08 26 views
-1

イメージをアレイに追加しようとした後、4つのアレイを1つのアレイにマージする必要があります。私がやろうとしています何 は次のとおりです。アレイにイメージを追加する方法

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) 

このlinkを踏襲したが、すべての 出力で働いていないひどいです。正しい道を案内してください。 おかげ

+0

mergeでは、最後の配列には4つの配列が含まれているか、4つの配列の項目が含まれていますか? – Tj3n

+0

には4つの配列が含まれています。これは、配列をtableviewのセクションの行数に渡す必要があるためです。 –

答えて

3

私は型を推論するスウィフトの能力を活用して、変数letはなくvar変数にあなたの配列を構築することにより、それを行うだろう:私は強制的にアンラップしていないよという

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] 

注意戻り値はメソッドの戻り値です。代わりにflatMapを使用して配列内のnil値を切り捨てます。これは、画像をロードするときにエラーを処理するためのすばやく汚い方法です。ローディングされていない画像が適切に処理されるように、もっと複雑な処理が必要な場合があります。

+0

なぜあなたは配列を 'flatMap'しますか? 1次元配列には影響しません。 – Losiowaty

+1

配列の次元を減らすことに加えて、 'flatMap'は'任意の値の配列から 'nil'値を取り除きます(https://www.natashatherobot.com/swift-2-flatmap/) 。私はその効果のために使用しています。 – ColGraff

+0

ああそう!私はいつもこのことについて忘れています。良いこと、ありがとう! – Losiowaty

関連する問題