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

时间:2015-12-23 04:17:09

标签: arrays swift swift2

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

我收到的错误是

  

无法将'Int'类型的值转换为预期的参数类型   '@noescape(Int?)抛出 - >布尔“

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

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

1 个答案:

答案 0 :(得分:2)

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

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

请注意,来自SO帖子How do you check an array to see if it contains a nil value?的karthik:s答案建议您切换为使用-1而不是nil作为“非分配”。如果您使用该方法,则smallestArr没有理由可选:使用[Int]而不是[Int?]

偏离主题:还要注意,在当前形式中,此闭包可能最终为无限循环(所以也许smallestArr应该传递给peaceBlocks以便可能将-1条目转换为其他值? )。