【发布时间】:2015-12-08 17:02:18
【问题描述】:
以下代码在 OS X 上的 Playground 中运行,但在使用 Swift.org 在 Ubuntu 中编译后无法运行。
在游乐场
这按预期工作:
let permutedHands = [["A♦", "A♣", "6♠", "3♦", "T♥"], ["A♣", "A♦", "6♠", "3♦", "T♥"], ["6♠", "A♦", "A♣", "3♦", "T♥"], ["A♦", "6♠", "A♣", "3♦", "T♥"], ["T♥", "6♠", "A♦", "3♦", "A♣"], ["6♠", "T♥", "A♦", "3♦", "A♣"], ["A♦", "T♥", "6♠", "3♦", "A♣"], ["T♥", "A♦", "6♠", "3♦", "A♣"], ["6♠", "A♦", "T♥", "3♦", "A♣"], ["A♦", "6♠", "T♥", "3♦", "A♣"], ["3♦", "6♠", "A♦", "T♥", "A♣"], ["6♠", "3♦", "A♦", "T♥", "A♣"], ["A♦", "3♦", "6♠", "T♥", "A♣"], ["3♦", "A♦", "6♠", "T♥", "A♣"], ["6♠", "A♦", "3♦", "T♥", "A♣"], ["A♦", "6♠", "3♦", "T♥", "A♣"], ["3♦", "T♥", "A♦", "6♠", "A♣"], ["T♥", "3♦", "A♦", "6♠", "A♣"], ["A♦", "3♦", "T♥", "6♠", "A♣"], ["3♦", "A♦", "T♥", "6♠", "A♣"], ["T♥", "A♦", "3♦", "6♠", "A♣"], ["A♦", "T♥", "3♦", "6♠", "A♣"], ["3♦", "T♥", "6♠", "A♦", "A♣"], ["T♥", "3♦", "6♠", "A♦", "A♣"], ["6♠", "3♦", "T♥", "A♦", "A♣"], ["3♦", "6♠", "T♥", "A♦", "A♣"], ["T♥", "6♠", "3♦", "A♦", "A♣"], ["6♠", "T♥", "3♦", "A♦", "A♣"]]
let sortedPerms = permutedHands.map { $0.sort() }
let permSet = NSSet(array: sortedPerms)
let arr = Array(permSet) // [["3♦", "6♠", "A♣", "A♦", "T♥"]]
swift build 用于 Linux 中的 Swift.org
编译时的错误信息:
无法将类型“[[String]]”的值转换为预期的参数类型“[AnyObject]”
让 permSetArray = NSSet(array: sortedPerms)
我绝望地尝试了这个,以防万一:
let sortedPerms = perms.map { $0.sort() }.map { $0 as! AnyObject }
它让编译器很高兴,但它在运行时崩溃:
无法将“Swift.Array”(0x7f84701950d8)类型的值转换为“Swift.AnyObject”(0x7f84701700e8)。
中止(核心转储)
我浏览了 Swift GitHub 存储库,但没有发现关于 NSSet 的任何未实现或不完整的内容,它在 Swift.org 的 Foundation 中看起来不错(据我所知)。
知道如何调试和解决这个问题吗?一种解决方法也是可以接受的。
【问题讨论】:
标签: linux swift macos foundation nsset