【问题标题】:'Set<NSObject>' does not have a member named 'containsObject' after updating XCode & Swift更新 XCode 和 Swift 后,“Set<NSObject>”没有名为“containsObject”的成员
【发布时间】:2015-04-11 12:59:00
【问题描述】:

上周我一直在使用最新的 Facebook iOS SDK v4.0.1 编写一个 Swift 应用程序。今天更新到最新的 XCode 6.3 和 Swift 1.2 后,我遇到了很多错误。我已经能够修复其中的大部分,主要是新的语法错误,比如强制转换,但是这个错误出现了,我还没有找到原因。

if result.grantedPermissions.containsObject("email") {
... 
}

'Set<NSObject>' does not have a member named 'containsObject'

如果有人有任何建议将不胜感激,谢谢。

【问题讨论】:

    标签: xcode facebook swift


    【解决方案1】:

    看来result.grantedPermissions是原生Swift Set 它是在 Swift 1.2 (Xcode 6.3) 中引入的,并与 NSSet 连接。

    要检查Set 的成员资格,您可以使用其contains() 方法,例如:

    if result.grantedPermissions.contains("email") {
        ... 
    }
    

    有关更多信息,请参阅 Swift 文档中 Collection Types 中的“Sets”。

    【讨论】:

    • 从它的声明来看,contains函数是针对SequenceType的。所以我猜它会及时花费O(n),除非动态专门化为Set&lt;_&gt;Set&lt;_&gt; 本身有 contains 方法,所以更好的性能,不是吗?
    • @findall:好点。我实际上不知道是否存在性能差异,但set.contains() 可能会使用哈希值进行快速查找。我会更新答案并感谢您的反馈!
    • @MartinR 将其整理出来,感谢您的回复 :)
    猜你喜欢
    • 1970-01-01
    • 2014-12-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-28
    • 2016-06-13
    • 1970-01-01
    相关资源
    最近更新 更多