car*_*o18 9 xcode ios swift swift-playground
Swift Playground中似乎存在使用NSCountedSet的错误.
此代码按预期工作
let numbers = [1,2,2,4,6,7,8,8,5,8,1]
let set = NSSet(array: numbers)
Run Code Online (Sandbox Code Playgroud)
但是当我尝试以相同的方式创建NSCountedSet时
var bag = NSCountedSet(array: numbers)
Run Code Online (Sandbox Code Playgroud)
我收到这个错误
游乐场执行失败:/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)
Run Code Online (Sandbox Code Playgroud)
然后我收到这个错误
游乐场执行失败:/var/folders/bl/1tnlvfzd4mqb9gkpx0h8rxy00000gp/T/lldb/6514/playground732.swift:58:23:错误:调用var bag中的额外参数'array'= NSCountedSet(array:nums)
我在这里错过了什么吗?
我可以通过这样做来解决这个问题
var bag = NSCountedSet()
for number in numbers {
bag.addObject(number)
}
Run Code Online (Sandbox Code Playgroud)
但它不是很优雅
更新:正如@ carbo18报道的那样,这已在Xcode 6.3 beta 4中得到修复.
老答案:这绝对看起来像一个bug.NSCountedSet有初始化者
convenience init(array: [AnyObject])
convenience init(set: NSSet)
Run Code Online (Sandbox Code Playgroud)
但
let b1 = NSCountedSet(array: []) // extra argument 'array' in call
let b2 = NSCountedSet(set: NSSet()) // extra argument 'set' in call
Run Code Online (Sandbox Code Playgroud)
两者都无法编译.
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)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
842 次 |
| 最近记录: |