arrays - 无法将类型 'Int' 的值转换为预期的参数类型 '@noescape (Int?) throws -> Bool'

标签 arrays swift swift2

我想检查 smallestArr 是否包含 -1,如果它至少包含一个 -1,则调用 placeBlocks。我需要继续调用 placeBlocks 直到数组填满,这意味着他们输掉了比赛。

我收到的错误是

Cannot convert value of type 'Int' to expected argument type '@noescape (Int?) throws -> Bool'

var smallestArr = [Int?](count: 25, repeatedValue: -1)

while smallestArr.contains(-1){
    placeBlocks()
}

最佳答案

尝试将 [Int?] 更改为 [Int](非可选数组成员)

var smallestArr = [Int](count: 25, repeatedValue: -1)
while (smallestArr.contains(-1)) {
    placeBlocks()
}

请注意 karthik:s 来自 SO 线程的回答 How do you check an array to see if it contains a nil value?建议您改用 -1 而不是 nil 作为“非赋值”。如果您使用该方法,则没有理由将 smallestArr 设为可选:使用 [Int] 而不是 [Int?]

题外话:另请注意,在其当前形式中,此闭包可能会以无限循环结束(因此也许 smallestArr 应该传递给 peaceBlocks 以可能翻转 -1 条目到其他值?)。

关于arrays - 无法将类型 'Int' 的值转换为预期的参数类型 '@noescape (Int?) throws -> Bool',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34428564/

相关文章:

ios - 如何使用 swift 从 Parse 上的用户指针检索数据

ios - Touch up 和 Touch down 操作 UIImageView

mysql - perl 数组搜索 mysql 结果

javascript - 是否可以将字符串转换为文字对象数组?

python - 矩阵的xy坐标列表

html - 获取 HTML 值 [swift]

swift - 在 Swift 中捕获 Objective-C 异常

javascript - 基于嵌套属性过滤数组

ios - 我将如何使用 Firebase 创建用户名?

ios - 后台通知