【问题标题】:How to extract values from the array after all values are injected into the array?将所有值注入数组后如何从数组中提取值?
【发布时间】:2020-09-27 06:26:52
【问题描述】:

The solution 帮助我避免空数组,但不能让我提取数组 [0] 旁边的值。
在将所有值附加到数组后,我想提取 2 个值。
array[0] 打印成功,但当我尝试打印 array1 时,错误消息显示为“索引超出范围”。

下面是代码:

    var followingList = [User]()

    func fetchfollowingList(callback: @escaping ([User]) -> Void) {

        API.User.fetchFollowingList { followingUser in

            self.followingList.append(followingUser)
            callback(self.followingList)
          print(self.followingList)
        }
          print(self.followingList[0].displayName)
          print(self.followingList[1].displayName)
    }

“打印(self.followingList)”结果在控制台:

[APP01.User]  
[APP01.User, APP01.User]   
[APP01.User, APP01.User, APP01.User]

我推断 array1 是从仅附加一个值的第一个数组中提取的,而不是从附加所有值的 第三个数组 中提取的,并且不知道如何修复它。

谢谢

【问题讨论】:

标签: arrays swift xcode


【解决方案1】:

填充数组的函数是一个async,所以当编译器到达print状态时,它可能还没有被填充。所以你也应该异步检查。比如:

func fetchfollowingList(callback: @escaping ([User]) -> Void) {

    API.User.fetchFollowingList { followingUser in

        self.followingList.append(followingUser)
        callback(self.followingList)
        print(self.followingList)

        self.printIfNeeded() // <- Check everytime something appended
    }
}

func printIfNeeded() {
    guard followingList.count > 1 else { return } // Check the condition you need.

    print(self.followingList[0].displayName)
    print(self.followingList[1].displayName)
}

【讨论】:

  • 非常感谢您的回答,它确实有效。但是,请让我进一步解释为什么访问附加了所有值的数组对我很重要:我需要调用 shuffled() 方法并从数组中提取 2 个值。 Print(array[1]) 是验证数组中是否有多个值的方法之一。在我继续调查这个问题时,“Futures & Promises”可能会有所帮助,但我仍然很难理解。欢迎您提供任何解决此问题的示例代码。
  • 有多种解决方案。但是您可能需要考虑一下,然后如果您没有找到任何解决方案,请使用嵌入的尝试过的代码 提出另一个问题。那我可以帮你解决这个问题,我的朋友。
猜你喜欢
  • 2016-01-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-08-28
  • 1970-01-01
  • 2020-09-02
  • 2017-08-11
  • 2013-02-24
相关资源
最近更新 更多