ios - 带有数组错误的 Swift NSCountedSet 初始化?

标签 ios xcode swift swift-playground

Swift Playground 中似乎存在使用 NSCountedSet 的错误。

此代码按预期工作

let numbers = [1,2,2,4,6,7,8,8,5,8,1]

let set = NSSet(array: numbers)

但是当我尝试以同样的方式创建一个 NSCountedSet 时

var bag = NSCountedSet(array: numbers)

我收到这个错误

Playground execution failed: /var/folders/bl/1tnlvfzd4mqb9gkpx0h8rxy00000gp/T/lldb/6514/playground599.swift:56:31: error: 'Int' is not identical to 'AnyObject' var bag = NSCountedSet(array: numbers)

我试过投数字

let nums = numbers as [AnyObject]
var bag = NSCountedSet(array: nums)

然后我得到这个错误

Playground execution failed: /var/folders/bl/1tnlvfzd4mqb9gkpx0h8rxy00000gp/T/lldb/6514/playground732.swift:58:23: error: extra argument 'array' in call var bag = NSCountedSet(array: nums)

我是不是漏掉了什么?

我可以通过这样做来解决这个问题

var bag = NSCountedSet()
for number in numbers {
    bag.addObject(number)
}

但不是很优雅

最佳答案

更新:据@carbo18 报道,这已在 Xcode 6.3 beta 4 中修复。

旧答案:这看起来确实像一个错误。 NSCountedSet 有初始化器

convenience init(array: [AnyObject])
convenience init(set: NSSet)

但是

let b1 = NSCountedSet(array: [])     // extra argument 'array' in call
let b2 = NSCountedSet(set: NSSet())  // extra argument 'set' in call

都无法编译。

Apple 开发者论坛 (https://devforums.apple.com/message/1081850#1081850) 也报道了这一点, 其中给出了以下解决方法:

let numbers = [1,2,2,4,6,7,8,8,5,8,1]
let bag = NSCountedSet()
bag.addObjectsFromArray(numbers)

关于ios - 带有数组错误的 Swift NSCountedSet 初始化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29172374/

相关文章:

iphone - 在 iphone 中重新加载 DatePicker

swift - ARKit:你如何迭代所有检测到的特征点?

ios - 更改键盘返回键标签文本

iphone - UIBackgroundModes 和 UIAccelerometer

iphone - 更新: cannot pass NSDictionary to UITableViewCell textlabel

objective-c - 检测isIpad的更好方法?

iphone - 使 Safari 浏览器出现在 iPad/iPhone 应用程序中

ios - 在动画期间检测按钮按下

ios - 如何在 Swift 中自定义 UISlider 值

Swift 协议(protocol)嵌套在一个类中