Swift NSCountedSet与数组错误?
Swift Playground中似乎有一个使用NSCountedSet的bug。
此代码按预期工作
let numbers = [1,2,2,4,6,7,8,8,5,8,1] let set = NSSet(array: numbers)
但是当我尝试以相同的方式创build一个NSCountedSet
var bag = NSCountedSet(array: numbers)
我得到这个错误
Playground执行失败:/var/folders/bl/1tnlvfzd4mqb9gkpx0h8rxy00000gp/T/lldb/6514/playground599.swift:56:31:错误:'Int'与'AnyObject'不一致var bag = NSCountedSet(array:numbers)
我确实尝试了数字
let nums = numbers as [AnyObject] var bag = NSCountedSet(array: nums)
那么我得到这个错误
游戏场执行失败:/var/folders/bl/1tnlvfzd4mqb9gkpx0h8rxy00000gp/T/lldb/6514/playground732.swift:58:23:错误:在调用中的额外参数'数组'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
都没有编译。
苹果开发人员论坛( 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)