たぶん、これは私がそのような厄介な「機能」を経験しているだけです:
Xcode 6.0.1からXcode 6.1にアップグレードした後、状況は変わりました。 Xcode 6.1は、プロジェクトのインデックス作成やソースファイルのコンパイルを永久に行っています。このプロジェクトは巨大なものではありません。ワークスペースにSwiftファイルとAWS SDK 2.0 Cocoapodの束が含まれているだけです。全体のインデックス作成とコンパイルがスムーズに行われるとは思わない。私はいくつかのaws-sdk-ios-samplesを試してみましたが、Xcode 6.1がそれらでどのように機能するかを確認するだけで、同じように永遠に待機していました。
これまでに試したソリューション:
残念ながら、どれも機能しませんでした。
追伸多分私はプロジェクトを再作成してみるべきですか?コンピューターの設定:MacBook Pro(Retina、13インチ、2014年中頃)、メモリー8 GB 1600 MHz DDR3、Yosemite付き。 (この小さなプロジェクトを実行するにはこれで十分だと思います。)
ファイルの分割、Xcode 6.2ベータ版のインストール、文字列連結ステートメントの破壊など、上記の提案の多くを試しました。最終的には、テストデータに使用していた辞書リテラル宣言の配列を複数の.append
ステートメントに分割しました。
// This causes indexing/building to hang...
var test = [ [ "a": false, "b": "c" ],
[ "a": false, "b": "c" ],
[ "a": false, "b": "c" ],
[ "a": false, "b": "c" ],
[ "a": false, "b": "c" ],
[ "a": false, "b": "c" ] ]
// This works fine.
var test = [ [ "a": false, "b": "c" ] ]
test.append([ "a": false, "b": "c" ])
test.append([ "a": false, "b": "c" ])
test.append([ "a": false, "b": "c" ])
test.append([ "a": false, "b": "c" ])
test.append([ "a": false, "b": "c" ])
また、価値のあることですが、この配列の6番目のエントリが問題の原因です。 5つの作品で十分です。
私にとって唯一の有効な解決策は、(現在のプロジェクトだけでなく、フォルダ全体をクリーンアップするだけで)すべての派生データを削除してから、Xcodeを再起動することです。
Xcodeでファイル/設定を開く
ポップアップウィンドウの右端にある[場所]をクリックします
「/ Users/Mac/Library/Developer/Xcode/DerivedData」の横にある小さな矢印アイコンをクリックします。これにより、DerivedDataフォルダー(以前のプロジェクトから派生したすべてのデータを含むXcodeフォルダーが表示されます。 )
DerivedDataフォルダーを削除する
CocoaPodsを使用していますか?今日、同じ問題に出くわしました。 (xCode 6.1.1を使用)
この問題を解決するために、~/Library/Developer/Xcode/DerivedData
、プロジェクトディレクトリのPods
フォルダー、および<project>.xcworkspace
のすべてを削除しました。
次に、ターミナルを開いてプロジェクトディレクトリに移動し、pod install
を再度実行しました。
今日も同じ問題がありました。 Xcode 6.3.2、中規模のSwiftプロジェクト。ある時点で、インデックス作成が開始され、インデックス作成が終了しませんでした。これを引き起こしたコードは、タイプ[String:[String]]の辞書であったため、値として文字列配列を持つ文字列キー辞書です。 AからZのキーを持つこれらの2つがあり、これらの26の各エントリには5〜10個の文字列の文字列配列が含まれています。
派生データをクリアしても解決しませんでした。それらの辞書をコメントアウトするだけで、再び成功しました。
正直なところ、これはばかげています! AppleはXcodeを修正する必要があります! Swiftプロジェクトをコンパイルするとき、すでに恐ろしく遅くなりますが、このようなバグは目を見張るものです。これで自分の仕事をきちんとできない!
まだこの問題を抱えている人のために、これは私が楽しんでいる回避策であり、オブジェクトを1つずつ入力する必要がなくなります:
// instead of this, which freezes indexing
let keys = [keyQ, keyW, keyE, keyR, keyT, keyY, ... keyM]
// and instead of this, which is ugly & lengthy
var keys = [KeyboardKey]()
keys.append(keyQ)
keys.append(keyW)
...
keys.append(keyM)
// use this:
var keys = [KeyboardKey]()
keys.appendContentsOf([keyQ, keyW, keyE, keyR, keyT, keyY, ... keyM])
私にとっては、上記のすべてを試してみましたが成功しませんでした。しかし、私がしなければならなかったのは、派生データフォルダを削除してから、別のランダムなプロジェクトを開いて、インデックスが作成されるのを待って、元の(機能不全の)プロジェクトが動作することだけです!
開発の世界にAppleを支持し、Swiftコンパイラをオープンソースにします。そのため、私たちはみなさんの無能さに邪魔されません。
Xcodeバージョン7.3(7D175)を使用しています
根本的な問題を見つけたのではないかと思います。インデックス作成フェーズで立ち往生した2つのインスタンス:
変数に割り当てたクロージャーを作成し、タイプシグネチャを省略しました。 Xcodeにはその型推論ステップに問題があると思います。記憶が正しければ、引数の1つはCGPointであり、コンストラクターがオーバーロードされています。私の仮説は、閉包が引数として受け入れる可能性が多すぎる可能性があるということです。
1つの型のインスタンスを返す代わりに、共通の基本クラスを持つ多くの型のインスタンスを返すことができるように、ファクトリメソッドをリファクタリングしました。ファクトリメソッドを使用したところはどこでも、結果のオブジェクトを特定の型にキャストしなければならなかったようです(as?を使用するか、特定の型を受け入れる変数にオブジェクトを割り当てることによって)。
以前の個人が言及した辞書宣言でも同じことが起こっているようです。 Appleにバグレポートを提出しました。
私は同じ問題に苦しんでいます。上記の2つのソリューション(派生データの削除と.xcworkspaceの削除)を試しましたが、成功しませんでした。また、ほとんどのコードを少しずつコメントアウトし、ほとんど何も残っていない状態でインデックスを作成するまでファイルを削除してみました。
私のために働いた解決策を見つけました、インデックス作成に問題がなかった古いXcodeバージョン6.1(6A1030)でプロジェクトを開いた後、以前使用していた最新のXcodeバージョン6.1(6A1052d)に戻りました修正し、引き続き機能しました。
私の結論は、これはXcodeバージョン6.1(6A1052d)のバグであり、将来のリリースで改善されることを望んでいるということです。
問題は時々戻ってきますが、毎回同じ修正が機能します。別の解決策は、古いXcodeバージョン6.1(6A1030)をそのまま使用することですが、iOS 8.1を実行しているデバイスでは機能せず、最新のバグ修正もありません。
6.1にアップグレードした後、この同じ問題が発生しました。 Xcodeは、特定のエラーメッセージを生成せずに、コンパイルまたはインデックス作成でスタックします。
この問題は、Swiftファイル内の長い式の一部を複数の短い式に分割することで最終的に解決されました。私のプログラムの一部は、多くの異なる文字列変数を組み合わせて長い文字列を形成します。単一の式でそれらを結合する試みと、加算代入演算子の使用は両方とも失敗しました。次のような(簡略化された)ようなことをすることで、機能させることができました。
var a = "Hello"
var b = " "
var c = "World"
var d = "!"
var partA = a + b
var partB = c + d
var result = partA + partB
Xcodeの以前のバージョンで次のエラーを何度も受け取ったことから、この考えを得ました。
お役に立てれば
私のXcodeでの解決策は、すべての冗長ウィンドウを閉じることでした。何らかの理由で、開いているウィンドウの多くがXCodeを非常に遅くします。
通常、コードボードのXcodeインデックス作成は、ストーリーボードでの支援やその逆など、提案やオートコンプリートのために行われます。ただし、Xcodeプロジェクトを高速化するには、ターミナルを使用してオン/オフを切り替えることができます
インデックス作成をオフにする
defaults write com.Apple.dt.XCode IDEIndexDisable 1インデックス作成のデフォルトを有効にするwrite com.Apple.dt.XCode IDEIndexDisable 0
しかし、優れたRAMを備えたスピーディなMacを使用するためのより良いアプローチ。
Xcode 8.3.3でこれを試しました。私の結果は次のとおりです。
インデックス作成がハングする原因となる完全に細かいSwiftコードを書くことができます。
インデックス作成がハングすると、ハングします。 Swiftコードを、インデックス作成がハングしない原因に戻さないと、ハングします。
そのような状況では、プロジェクトを閉じて再度開くことは役に立ちません。
Xcodeを終了して再起動すると役立ちます。インデックス作成がハングすることはもうありません(つまり、コードがハングしないように変更した場合)。
Macを再起動することも同様に役立ちますが、必ずしも必要ではありません。
ハングは、完全に細かいSwiftコードによって引き起こされます。私が見た例
if let date = function1()
?? function2()
?? function3()
?? function4()
?? function5()
?? function6()
?? function7()
?? function8()
?? function9()
?? function10() {
return date
}
インデックス作成がハングします。 「??」のほとんどをコメントアウトしました行し、それは大丈夫だった(Xcodeを終了して再起動した後)。 1行ずつコメント解除します。いくつかの行では問題ありませんでしたが、次の行のコメントを外すとハングします。
明らかに役立つ唯一のことは、コードを変更することです。
最後に、この問題を「解決」しましたが、これは単なる回避策です。
別のプロジェクトを作成し、ファイルを1つずつ追加しました。次に、「非常に長い」viewcontroller.Swiftファイルを見つけました。次に、コードをモジュールに分割し、繰り返し使用されるコードを別のSwiftファイル内の関数にしました。また、長い表現は短い表現に分解するべきだという提案をオンラインで受けました。次に、インデックス作成が機能し、コンパイルが機能します。
だから、今のところ、私はそれを「解決」しています。
しかし、私はこれが正しいとは思わない。 Xcode IDEは、「非常に長い」Swiftファイルを処理できるだけでなく、1500行のみである必要があります。 Xcode 6.1はすでにXcode 6.0.1からのアップグレードですが、これは間違いなくバグ(長い間存在します)であると思います。
私にとっては、Xcodeアプリを削除し、再度ダウンロードしてインストールしました。これで、少なくとも今は問題が解決しました。
Xcode 6.1.1に更新することをお勧めします
公式にリリースされ、インデックス作成の問題が解決されました。アップデートの説明では、安定性の修正が適用されているため、より安定した方法で動作する可能性が非常に高いと記載されています。
このサガで幸運を祈ります!
これはXcode 6.3.2で見ています。リリース後1年で、コンパイラが動作することを望んでいましたが、残念ながら。
上記の解決策のいずれも機能しない場合は、構文エラーがないかコードを確認してください。リファクタリングの過程で、クロージャーを抽出しましたが、パラメーターを修飾するのを忘れていました。
let hangsInsteadOfError = { l, r in
return l.nameFirst < r.nameFirst
|| l.nameFirst == r.nameFirst && l.nameLast < r.nameLast }
let fixingErrorAvoidsHang = { (l:User, r:User) -> Bool in
return l.nameFirst < r.nameFirst
|| l.nameFirst == r.nameFirst && l.nameLast < r.nameLast }
Swiftでの作業から何かを学んだ場合、問題のあるコードを見つけるために過度に後戻りする必要がないように、段階的に作業することです。
同じ正確なMacBook ProのSwiftファイルでXcode 6.1.1を使用しています。
行を3D文字列配列に追加し続けると、Xcodeが突然使用できなくなり、何もできなくなりました。
6.1に戻ろうとしますが、うまくいけば問題は解決します。
私もこの問題を抱えており、「+」演算子を使用して式を削除/変更することで解決しました。
私はこれを変えると誓います:
var mainArray = arrayOne + arrayTwo + arrayThree + arrayFour + arrayFive
これに:
var mainArray = arrayOne
mainArray += arrayTwo
mainArray += arrayThree
mainArray += arrayFour
mainArray += arrayFive
問題を解決しました。それはクレイジーに聞こえますが、それは私にとって真実でした。
私のマシンは2013年後半にMBPが上限に達しました
彼らがそれを理解するまで6.0.1に戻すことを気にしないなら、それは私のために働いたものです。 6.1と6.1.1の両方で同じ問題が発生していました。今は元気です。 6.2が出たら試してみます。
公式の開発サイトで以前のバージョンのAppleソフトウェアを見つけることができます: https://developer.Apple.com/downloads/index.action
これを行う場合は、まずXcodeの現在のコピーを削除してください。
Xcode 6.2ベータ版で問題は解決しました。高速ではありませんが、少なくとも永久にインデックス付けされているわけではありません。ベータ版は通常のXcodeインストールの上にnotインストールを行うため、ベータ版が気に入らない場合は削除するだけです。
私は同じ問題を抱えていました。私のxCodeは8.2.1です。しかし、私の場合、33のキーと値のペアを持つ辞書の配列を作成したかったのです。私は次の方法で行っていましたが、インデックス付けに固執していました:
var parameter = [String : AnyObject]()
var finalArray = [parameter]
for item in listArray
{
parameter = ["A": item.a as AnyObject, "B": item.b as AnyObject, "C": item.c as AnyObject, ... , "Z": item.z as AnyObject]
finalArray.append(parameter)
}
以下は私のために働いた:
var parameter = [String : AnyObject]()
var finalArray = [parameter]
for item in listArray
{
parameter["A"] = listArray.a as AnyObject
parameter["B"] = listArray.b as AnyObject
parameter["C"] = listArray.c as AnyObject
parameter["D"] = listArray.d as AnyObject
.
.
.
parameter["Z"] = listArray.z as AnyObject
finalArray.append(parameter)
}
私はXcode 8.2を使用し、この問題で終了しました。複雑なTuple変数-Tupleのサブ配列を持つTupleの配列を定義した後に開始しました。 Tupleのサブ配列にプログラムで計算されるプロパティがある場合、事態は本当に遅くなります。
他のいくつかの回答が指摘したように、インデックス作成には永遠に時間がかかり、変数の型を推測しようとしていると思います。
型を含む変数を明確に定義することで、最初に問題を解決しました。プロパティを更新するとき、変数を定義する際に計算する代わりに、最初に計算してからタプルに割り当てます。
コードの例を次に示します。
var sectionTuples: [(section: String, rows: [(name: String, subtitle: String)])] = []
let subtitle1: String = "" // something calculated dynamically
let subtitle2: String = "" // something calculated dynamically
sectionTuples = [(
section: "Section 1", rows: [
(name: "name1", subtitle: subtitle1),
(name: "name2", subtitle: subtitle2)
])]
結論は、Xcodeが複雑な構造を推測させないことです。