在Swift中将元素附加到其中后,可选数组为空

时间:2018-01-01 21:20:12

标签: arrays swift optional

我的上下文如下:我有一个可以绘制不同房间形状的视图控制器。每个墙都是UIView的子类。墙的模型如下:

struct Wall {
  let name: String
  let number: Int
  var length: CGFloat?
  var attachedObjects: [WallObject]?
  var isSelected: Bool
}

因此每个墙都有一个属性,可以分配上述属性之一。 当在一面墙上发生点击时,发件人会被存储到一个可选变量中:

@objc fileprivate func changeWallProperties(sender: UITapGestureRecognizer) {
    guard let tappedWall = sender.view as? RoomShapeDrawingV else {print("could not get wall"); return}
    tappedWall.wallModel?.isSelected = true 
    selectedWallModel = tappedWall.wallModel 

我有一个集合视图,显示可以在墙上的对象。当选择一个单元格时,我得到一个WallObject类型,它是集合视图内容的另一个结构,需要将选择放入所选墙的模型中:

func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
    guard let aWallHasBeenSelected = isWallSelected else {print("could not get the selected wall"); return}
    if aWallHasBeenSelected {
        print("a wall has been selected")
        let wallObject = wallObjects[indexPath.item]

        selectedWallModel?.attachedObjects?.append(wallObject)

最后一行什么也没做,[attachedObjects]在所选墙的模型中是零。我在这篇文章中找到了一个解决方案:Adding elements to optional arrays in Swift 但我想知道为什么会发生这种情况,如果代表我或者有什么逻辑错误。是因为我使用结构并且我复制它们,或者还有其他事情发生?

0 个答案:

没有答案