我已经使用xCode 6.3<转换器将我的项目转换为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文件夹,但这并没有帮助。
我已经搜索过,但我找不到有同样问题的人 有谁知道如何解决这个问题?
答案 0 :(得分:0)
这对派生数据来说不是问题。看起来您之前有NSArray
(可能是NSSet
),您现在拥有Array
Set
。大概你正试图做一些像使用该值来键入字典类型的东西。在6.3中,先前返回NSSomething
的几个API调用现在返回本机Swift类型。
Swift Arrays不可清除(因为它们可能包含不可清除的东西)。 NSArrays(虽然并不总是以有用的方式,取决于它们包含的内容,因此要小心)。
请注意,通过类型推断,您明确使用Set
或Array
将不会是您可能拥有的唯一位置。如果你调用一个返回一组数组的函数,并且你像这样分配了这个值:let thing = funcThatReturnsArrayOfSets()
那么即使没有在你的代码中明确地写出这个类型,你也会有一个[Set<whatever>]
。
要解决此问题,您需要找到导致错误的行,查看所涉及的类型,然后追溯到声明这些变量的位置。按住Option键并单击所有内容以查看它们的类型。