0

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 フォルダーの削除も試みましたが、解決しませんでした。

検索しましたが、同じ問題を抱えている人は見つかりませんでした。
誰でもこれを解決する方法を知っていますか?

4

1 に答える 1

0

これは、派生データでは問題になりません。以前はNSArray(おそらく of NSSet) があったようですが、現在はArrayof になっていますSet。おそらく、その値を使用して辞書タイプにキーを設定するようなことをしようとしているでしょう。6.3 では、以前は返されていたいくつかの API 呼び出しがNSSomethingネイティブの Swift 型を返すようになりました。

Swift 配列はハッシュ可能ではありません (ハッシュ可能でないものが含まれている可能性があるため)。NSArray はそうです (ただし、含まれている内容によっては常に役立つとは限りませんので、注意してください)。

型推論では、Setorの明示的な使用Arrayだけがセットを持つ可能性のある場所ではないことに注意してください。セットの配列を返す関数を呼び出し、その値を次のように割り当てると 、コードにその型を明示的に記述しなくてもlet thing = funcThatReturnsArrayOfSets()、偶数になります。[Set<whatever>]

これを修正するには、エラーが発生している行を見つけ、関連する型を調べてから、それらの変数が宣言された場所までさかのぼる必要があります。Option キーを押しながらすべてのものをクリックすると、それらの種類が表示されます。

于 2015-04-16T12:10:21.620 に答える