Swift 1.2 不能使用类型为 '(String)' 的参数列表调用 'count'

Posted

技术标签:

【中文标题】Swift 1.2 不能使用类型为 \'(String)\' 的参数列表调用 \'count\'【英文标题】:Swift 1.2 cannot invoke 'count' with an argument list of type '(String)'Swift 1.2 不能使用类型为 '(String)' 的参数列表调用 'count' 【发布时间】:2015-04-24 18:56:58 【问题描述】:

用新的Swift 1.2更新到Xcode 6.3.1,旧方法countElement更改为count,但是当我切换到使用count时,它总是抛出这个错误消息:

无法使用“(String)”类型的参数列表调用“count”

这个 sn-p 是我从 Apple 文档中复制的,但仍然无法正常工作。

func printAndCount(stringToPrint: String) -> Int 
    println(stringToPrint)
    return count(stringToPrint)


func printWithoutCounting(stringToPrint: String) 
    printAndCount(stringToPrint)


printAndCount("hello, world")

【问题讨论】:

该代码在我的 Xcode 6.3.1 中编译和运行没有问题。 String length in Swift 1.2 and Swift 2.0 的可能重复项 【参考方案1】:

尝试使用 Swift 模块前缀调用全局 count 函数,如下所示:

Swift.count(stringToPoint)

例如当扩展 Array 类型时,还有一个名为 count 的属性,因此存在命名冲突。

【讨论】:

我不确定这是否是一个错误,但是在我所有的“计数”调用中添加 Swift 模块前缀确实解决了这个问题!伟大的提示 Klaas,你拯救了我的一天!【参考方案2】:

您是否在同一范围内声明了变量“count”? 如果是这样,您应该更改变量名称。并尝试重新构建。

【讨论】:

对我来说似乎是一个错误。 多哈。不是错误,因为覆盖范围的行为符合预期,但这是一个容易犯的错误,并且错误消息没有帮助。【参考方案3】:

我遇到了同样的问题,这让我发疯了。

为了解决这个问题,我使用了:

 myString.characters.count

宾果游戏。

【讨论】:

我也遇到了同样的问题,前缀Swift 对我不起作用。但你的答案确实有效。不知道这个bug是怎么来的【参考方案4】:

您是否尝试过清理和构建?它在这里工作。

【讨论】:

好吧,我创建了一个新的游乐场,代码运行良好。我猜是因为之前的 Playground Swift 版本搞砸了。 有时你只需要重新加载它(通过退出 Xcode 或剪切和粘贴代码)。【参考方案5】:

好吧,我创建了一个新的游乐场并复制代码工作正常。我想这是因为以前的 Playground Swift 版本搞砸了。创建一个新项目工作正常。

【讨论】:

以上是关于Swift 1.2 不能使用类型为 '(String)' 的参数列表调用 'count'的主要内容,如果未能解决你的问题,请参考以下文章

Swift 1.2 到 Swift 2:无法将类型的值转换为预期的参数类型

在 Swift 1.2 中使用assetForURL

Swift 3 不能使用 SwiftyJSON 和 Alamofire 为“String”类型的值下标“String”类型的索引

不能使用 String 类型的索引为 NSDictionary 类型的值下标。从 Swift 2.3 -> 3.2 转换时

上下文类型 'Any' 不能与数组文字 Swift 3 一起使用

Swift:String类型的值永远不能为零,不允许比较