【问题标题】:How to add images in array如何在数组中添加图像
【发布时间】:2017-01-16 01:42:53
【问题描述】:

尝试将图像添加到数组中,然后需要将四个数组合并为一个数组。 我想做的是:

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,但根本没有用 输出很糟糕。请指导正确的方法。 谢谢

【问题讨论】:

  • 合并是指最后一个数组包含4个数组还是包含4个数组的项?
  • 包含4个数组,因为需要将数组传递给tableview部分的行数。

标签: ios iphone arrays swift uiimage


【解决方案1】:

我会通过将数组构建到 let 变量而不是 var 变量中来做到这一点,利用 Swift 推断类型的能力:

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]

请注意,我不会强制解开 init 方法的返回值。相反,我使用flatMap 剔除数组中的任何nil 值。这是一种在加载图像时处理错误的快速而简单的方法,您可能需要做一些更复杂的事情来确保正确处理任何未加载的图像。

【讨论】:

  • 你为什么flatMap数组?它应该对一维数组没有影响。
  • 除了减少数组的维度,flatMap还会remove any nil values from an array of Optional values。我正在使用它来实现这种效果。
  • 对了!我总是忘记它的这个方面。好东西,谢谢!
  • 数组打印为空
  • 这是arrFiltersImagesList的输出:[[], [], [], []]
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-03-01
  • 2021-10-24
  • 2020-08-01
  • 2022-01-16
  • 2012-01-20
  • 2022-01-15
  • 2020-07-02
相关资源
最近更新 更多