Swift 1.2:<unknown>:0:错误:'[Set <t>]'不能转换为'Hashable'</t> </unknown>

时间:2015-04-16 11:29:17

标签: swift set hashable

我已经使用xCode 6.3&lt;转换器将我的项目转换为swift 1.2, 之后我还有很多错误,但我手动修复了它们。

现在当我编译我得到:
<unknown>:0: error: '[Set<T>]' is not convertible to 'Hashable'

我使用Set的唯一地方是:

var productID:Set<NSObject> = [subscriptionId]
var productsRequest:SKProductsRequest =    SKProductsRequest(productIdentifiers: productID )

我尝试过清理项目并尝试删除DerivedData文件夹,但这并没有帮助。

我已经搜索过,但我找不到有同样问题的人 有谁知道如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

这对派生数据来说不是问题。看起来您之前有NSArray(可能是NSSet),您现在拥有Array Set。大概你正试图做一些像使用该值来键入字典类型的东西。在6.3中,先前返回NSSomething的几个API调用现在返回本机Swift类型。

Swift Arrays不可清除(因为它们可能包含不可清除的东西)。 NSArrays(虽然并不总是以有用的方式,取决于它们包含的内容,因此要小心)。

请注意,通过类型推断,您明确使用SetArray将不会是您可能拥有的唯一位置。如果你调用一个返回一组数组的函数,并且你像这样分配了这个值:let thing = funcThatReturnsArrayOfSets()那么即使没有在你的代码中明确地写出这个类型,你也会有一个[Set<whatever>]

要解决此问题,您需要找到导致错误的行,查看所涉及的类型,然后追溯到声明这些变量的位置。按住Option键并单击所有内容以查看它们的类型。