Schneller Xcode-Index Einfrieren oder Langsam

101

Vielleicht erlebe ich nur so ein nerviges "Feature":

Nach dem Upgrade von Xcode 6.0.1 auf Xcode 6.1 haben sich die Dinge geändert. Xcode 6.1 indiziert für immer das Projekt oder kompiliert Quelldateien. Das Projekt ist nicht sehr groß. Es enthält nur eine Reihe von Swift-Dateien und AWS SDK 2.0-Cocoapods im Arbeitsbereich. Ich denke nicht, dass es das Ganze daran hindern sollte, reibungslos zu indizieren und zu kompilieren. Ich habe es mit einigen aws-sdk-ios-Beispielen versucht, nur um zu sehen, wie Xcode 6.1 auf ihnen funktioniert, und es endete damit, dass ich für immer darauf wartete.

Welche Lösungen habe ich bisher ausprobiert:

  1. Löschen von "Abgeleiteten Daten" im Organizer und erneutes Öffnen und Arbeitsbereich. (nicht zu beheben)
  2. "Paketinhalt anzeigen" in der .xcodeproj-Datei und Löschen von .xcworkspace wie in ( Xcode 4 - langsame Leistung )

Keiner von ihnen hat leider funktioniert.

PS Vielleicht sollte ich versuchen, das Projekt neu zu erstellen? Meine Computereinstellungen: MacBook Pro (Retina, 13 Zoll, Mitte 2014), Speicher 8 GB DDR3 mit 1600 MHz, mit Yosemite. (Ich denke, das ist genug, um dieses kleine Projekt auszuführen.)

Leonard
quelle
Ähnliche Erfahrungen? Ja: Xcode Beta 3
Schnelle
2
Ich werde nicht viel helfen, aber was ich tue ist ... Ich lasse xcode 6.x einfach seine Zeit in Anspruch nehmen. Wenn ich dagegen ankämpfe, macht es mich fertig und ich warte nur, bis xcode 6 startet. Ich lasse es laufen, es ist eine dumme Indizierung. Ich starte dann den iOS-Simulator separat und warte, bis das blöde Sprungbrett auftaucht. Wenn ich schließlich ein Projekt starte, übersehe ich die Tatsache, dass in der Indizierung oft "Angehalten" steht und ich bete zu <# godObject #>, trinke Kaffee und versuche, in den Zen-Modus zu wechseln. Aber * seufz *, es ist rau: / und ich hatte xcode 5.1.1: | wirklich gemocht
staticVoidMan
Diese Antwort hat bei mir funktioniert
ma11hew28

Antworten:

72

Ich habe viele der oben genannten Vorschläge ausprobiert, darunter das Aufteilen von Dateien, die Installation von Xcode 6.2 Beta und das Unterbrechen von Anweisungen zur Verkettung von Zeichenfolgen. Was es schließlich für mich getan hat, war die Aufteilung einer Reihe von Wörterbuch-Literaldeklarationen, die ich für Testdaten verwendete, in mehrere .appendAnweisungen.

// 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" ])

Für das, was es wert ist, verursacht der sechste Eintrag in diesem Array das Problem für mich. fünf funktioniert gut.

Zen
quelle
Die gleiche Lösung funktionierte für mich mit einem Wörterbuch. Die direkte Initialisierung führte zu einer für immer laufenden Indizierung. Die init()schrittweise Initialisierung funktioniert einwandfrei. Erwähnenswert ist, dass ich die .xcworkspaceDatei auch löschen musste.
Jboi
Es wurde für mich ohne Wörterbücher behoben. Nur eine Reihe von Tupeln, die mit 8 Elementen in der Deklaration in Ordnung waren. Musste auf Anhänge mit 11 Elementen zurückgreifen. Ich habe mich nicht darum gekümmert, die genaue Bruchstelle zu finden, sondern bin 10x schneller gebaut. Xcode Version 6.1.1 (6A2008a) auf Mavericks.
Josh
Ich habe das Problem auch mit genau 6 Elementen getroffen. 5 war in Ordnung.
Justin Lau
Ist dies ein XCode-Problem oder ein Compiler-Problem?
Sljux
4
Ich habe dies in Xcode 7.3 mit einem Array-Literal von 229 Elementen erlebt. Anstatt es aufzubrechen, habe ich eine Typdeklaration hinzugefügt, anstatt Swift auf den Typ schließen zu lassen. Nachdem ich das getan hatte, funktionierte es.
Brigham
34

Die einzige funktionierende Lösung für mich besteht darin, alle abgeleiteten Daten zu löschen (nicht nur für das aktuelle Projekt, sondern nur den gesamten Ordner zu bereinigen) und dann Xcode neu zu starten.

  1. Öffnen Sie Datei / Einstellungen in Xcode

  2. Klicken Sie ganz rechts im Popup-Fenster auf Standorte

  3. Klicken Sie auf das kleine Pfeilsymbol neben "/Users/Mac/Library/Developer/Xcode/DerivedData"....it. Sie gelangen zu einem Xcode-Ordner, der einen DerivedData-Ordner enthält (der alle abgeleiteten Daten Ihrer vorherigen Projekte enthält .)

  4. LÖSCHEN Sie den Ordner DerivedData

Remy Cilia
quelle
1
@TravisM. Hast du die Schritte befolgt? Wenn Sie zu Fenster, Organizer, Projekte, Abgeleitete Daten löschen gehen, funktioniert dies nicht. Sie müssen die Einstellungen durchgehen.
Ericgu
@ericgu Ja, aber es hat nicht funktioniert. Ich habe mein Problem behoben, es hing jedoch damit zusammen, dass ich ein Wörterbuch mit fest codierten Daten auf einmal initialisierte. Als ich den Code verschob, um die fest codierten Daten zeilenweise hinzuzufügen, verschwanden die Probleme mit dem Einfrieren / Verlangsamen sofort.
Travis M.
Ordner unter ~ / Library / Developer / Xcode / DerivedData / auf meinem Computer. Sie finden es auch unter Fenster> Projekte in Xcode.
Suragch
Vielen Dank. Das hilft. Das Problem "Für immer indizieren" beginnt direkt nachdem ich meine cocoaPod-Version aktualisiert und eine Pod-Installation ausgeführt habe.
WKL
11

Verwenden Sie CocoaPods? Ich bin heute früher auf dasselbe Problem gestoßen. (Verwenden von xCode 6.1.1)

Um das Problem zu beheben, habe ich alles in ~/Library/Developer/Xcode/DerivedDatadem PodsOrdner in meinem Projektverzeichnis und gelöscht <project>.xcworkspace.

Ich öffnete dann das Terminal, navigierte zu meinem Projektverzeichnis und lief pod installerneut.

Michael Schinis
quelle
1
Ja, ich will. Im Moment verhält sich der Xcode in Ordnung. Aber es gibt immer noch von Zeit zu Zeit einen Absturzfehler des Sourcekits. Meine Lösung besteht darin, den abgeleiteten Datenordner zu löschen.
Leonard
Schön zu sehen, dass dies auch für jemand anderen funktioniert hat :). Anscheinend versucht xCode, CocoaPod-Bibliotheken zu indizieren und bleibt irgendwo hängen.
Michael Schinis
1
Das Löschen des Pods-Ordners und der <project> .xcworkspace-Datei und das erneute Ausführen der Pod-Installation funktionierten.
KML
9

Hatte heute das gleiche Problem. Xcode 6.3.2, mittelgroßes Swift-Projekt. Irgendwann begann die Indizierung und die Indizierung wurde nie beendet. Der Code, der dies verursachte, war ein Wörterbuch vom Typ [String: [String]], also ein String-Key-Diktat mit String-Arrays als Werten. Ich hatte zwei davon mit Schlüsseln von A bis Z und jeder dieser 26 Einträge enthält ein String-Array mit 5 bis 10 Strings.

Das Löschen abgeleiteter Daten hat nicht geholfen. Nur das Auskommentieren dieser Diktate brachte es wieder zum Laufen.

Ehrlich gesagt ist das lächerlich! Apple muss Xcode reparieren! Beim Kompilieren von Swift-Projekten ist es bereits furchtbar langsam, aber solche Fehler sind ein Showstopper. Ich kann meinen Job damit nicht richtig machen!

BadmintonCat
quelle
6

Für diejenigen, die immer noch dieses Problem haben, ist dies eine Problemumgehung, die mir Spaß macht und verhindert, dass Sie die Objekte einzeln eingeben müssen:

// 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])
Andrew Robinson
quelle
1
Wow ... ich hatte genau das gleiche Problem. Vielen Dank! Ich habe es Apple als Fehler gemeldet. Das zu tun, was du gesagt hast, hat bei mir nicht funktioniert. Ich musste mein langes Array in kleinere Arrays mit jeweils fünf oder weniger Elementen aufteilen.
ma11hew28
5

Für mich habe ich all das ohne Erfolg versucht; Aber alles, was ich tun musste, war, den abgeleiteten Datenordner zu löschen, dann ein anderes zufälliges Projekt zu öffnen, darauf zu warten, dass es indiziert wird, und jetzt funktioniert mein ursprüngliches (fehlerhaftes) Projekt!

Tun Sie der Entwicklungswelt einen Gefallen und machen Sie Ihre schnellen Compiler zu Open Source - damit wir nicht alle durch Ihre Inkompetenz vereitelt werden.

Gmeister4
quelle
3

Ich verwende Xcode Version 7.3 (7D175)

Ich glaube, ich hätte ein zugrunde liegendes Problem herausgefunden. Es gab zwei Fälle, in denen ich in der Indexierungsphase feststeckte:

  • Ich habe einen Abschluss erstellt, den ich einer Variablen zugewiesen habe, und die Typensignatur weggelassen. Ich denke, xcode hatte Probleme mit diesem Typinferenzschritt. Wenn ich mich richtig erinnere, war eines der Argumente ein CGPoint, das einen überladenen Konstruktor hat. Meine Hypothese ist, dass es zu viele Möglichkeiten gibt, was mein Abschluss als Argumente akzeptieren könnte.

  • Ich habe eine Factory-Methode so überarbeitet, dass anstelle von Instanzen eines Typs Instanzen vieler Typen mit einer gemeinsamen Basisklasse zurückgegeben werden können. Es scheint, dass ich das resultierende Objekt überall dort, wo ich die Factory-Methode verwendet habe, in einen bestimmten Typ umwandeln musste (entweder mit as? Oder indem ich es einer Variablen zuwies, die einen bestimmten Typ akzeptiert). Wieder scheint der Schritt der Typinferenz unterbrochen zu sein.

Es scheint, dass dies auch bei den von früheren Personen erwähnten Wörterbuchdeklarationen der Fall ist. Ich habe einen Fehlerbericht bei Apple eingereicht.

DudeOnRock
quelle
2

Ich habe das gleiche Problem nach dem Upgrade auf 6.1 festgestellt. Xcode würde beim Kompilieren oder Indizieren stecken bleiben, ohne eine bestimmte Fehlermeldung zu generieren.

Das Problem wurde schließlich behoben, indem einige der längeren Ausdrücke in den schnellen Dateien in mehrere kürzere Ausdrücke zerlegt wurden. Ein Teil meines Programms kombiniert viele verschiedene Zeichenfolgenvariablen, um eine längere Zeichenfolge zu bilden. Versuche, sie in einem einzigen Ausdruck zu kombinieren und den Additionszuweisungsoperator zu verwenden, schlugen fehl. Ich konnte es zum Laufen bringen, indem ich etwas Ähnliches wie das Folgende tat (vereinfacht):

var a = "Hello"
var b = " "
var c = "World"
var d = "!"
var partA = a + b
var partB = c + d
var result = partA + partB

Ich kam auf diese Idee, weil ich in der vorherigen Xcode-Version mehrmals den folgenden Fehler erhalten habe: "Der Ausdruck war zu komplex, um in angemessener Zeit gelöst zu werden. Überlegen Sie, den Ausdruck in verschiedene Unterausdrücke aufzuteilen."

Hoffe das hilft

Adam137
quelle
Ja danke, ich habe diese Art von Vorschlägen tatsächlich angenommen. Außerdem habe ich die Länge einer meiner Dateien von 1500 Zeilen auf etwa 1200 verringert. Natürlich habe ich ein neues Projekt erstellt und alle Dateien einzeln importiert. Dann geht es endlich wieder los. Ich bin mir nicht sicher, welcher der ultimative Retter ist.
Leonard
Einen langen Ausdruck in Swift aufzuteilen, hat mir geholfen.
MandisaW
2

Ich habe mit dem gleichen Problem zu kämpfen. Ich habe die beiden genannten Lösungen (Löschen abgeleiteter Daten und Löschen von .xcworkspace) ohne Erfolg ausprobiert. Ich habe auch versucht, den größten Teil des Codes langsam Stück für Stück zu kommentieren und die Dateien zu entfernen, bis fast nichts mehr übrig war und die Indizierung immer noch stecken blieb.

Ich habe eine Lösung gefunden, die für mich funktioniert hat. Ich habe das Projekt mit einer älteren Xcode-Version 6.1 (6A1030) geöffnet, die keine Probleme bei der Indizierung hatte, und bin dann auf die neueste Xcode-Version 6.1 (6A1052d) zurückgekehrt, die ich zuvor verwendet habe und die Indizierung war behoben und funktionierte weiterhin gut.

Mein Fazit ist, dass dies ein Fehler mit Xcode Version 6.1 (6A1052d) ist, von dem ich hoffe, dass er sich mit zukünftigen Versionen verbessern wird.

Das Problem tritt immer wieder auf. Jedes Mal funktioniert das gleiche Update. Ich denke, eine andere Lösung wäre, einfach bei der älteren Xcode-Version 6.1 (6A1030) zu bleiben, aber es funktioniert nicht mit Geräten, auf denen iOS 8.1 ausgeführt wird, und es gibt nicht die neuesten Fehlerkorrekturen.

Jorge Costa
quelle
Ich habe die meisten Vorschläge zur Lösung des Problems der fortwährenden Indizierung ausprobiert, und dies war der einzige, der für mich funktioniert hat. Ich hatte keinen älteren Xcode 6, aber ich hatte Xcode 5. Es wurde nicht erstellt, aber es wurde indiziert und danach wurde Xcode 6.1 erfolgreich indiziert.
SarahR
Ich vergesse zu erwähnen, dass dies nur eine vorübergehende Lösung war und ich es einige Stunden später erneut tun musste.
SarahR
2

Ich habe dies mit Xcode 8.3.3 versucht. Hier sind meine Ergebnisse:

Sie können einwandfreien Swift-Code schreiben, bei dem die Indizierung hängen bleibt.

Sobald die Indizierung hängt, hängt sie. Das Zurücksetzen des Swift-Codes auf etwas, das nicht dazu führen würde, dass die Indizierung hängen bleibt, hilft nicht, es bleibt jedoch hängen.

Das Schließen des Projekts und das erneute Öffnen helfen in dieser Situation nicht weiter.

Das Beenden und Neustarten von Xcode hilft. Die Indizierung hängt nicht mehr (wenn Sie den Code wieder in etwas geändert haben, das ihn nicht hängen lässt).

Ein Neustart Ihres Mac hilft ebenfalls, obwohl dies nicht erforderlich ist.

Das Hängen wird durch feinen Swift-Code verursacht. Ein Beispiel, wie ich ausgesehen hatte

if let date = function1()
?? function2()
?? function3()
?? function4()
?? function5()
?? function6()
?? function7()
?? function8()
?? function9()
?? function10() {
    return date
}

Die Indizierung würde hängen bleiben. Ich habe die meisten "??" Zeilen und es war in Ordnung (nach dem Beenden und Neustarten von Xcode). Eine Zeile nach der anderen nicht kommentiert. Bei einigen Zeilen war es in Ordnung, und wenn Sie die nächste Zeile auskommentieren, bleibt sie hängen.

Das einzige, was anscheinend hilft, ist das Ändern Ihres Codes.

gnasher729
quelle
2

Auf meinem Xcode bestand die Lösung darin, alle redundanten Fenster zu schließen. Aus irgendeinem Grund machen viele geöffnete Fenster Xcode sehr langsam.

Arik Halperin
quelle
Für mich war dies auch die Lösung, überraschend, da es lange Zeit zuvor mit der gleichen Anzahl offener Fenster gut funktioniert hat
Christian
1

Schließlich habe ich das Problem "gelöst", obwohl es nur eine Problemumgehung ist.

Ich habe ein anderes Projekt erstellt und Dateien einzeln hinzugefügt. Dann entdeckte ich eine "sehr lange" Datei viewcontroller.swift. Dann habe ich seine Codes in Module aufgeteilt und diese wiederholt verwendeten Codes in Funktionen in einer anderen schnellen Datei umgewandelt. Außerdem nahm ich online den Vorschlag an, lange Ausdrücke in kürzere zu unterteilen. Dann funktioniert die Indizierung und das Kompilieren.

Also für jetzt habe ich es "gelöst".

ABER ich denke nicht, dass das richtig ist. Xcode IDE sollte mehr als in der Lage sein, meine "sehr lange" schnelle Datei mit nur 1500 Zeilen zu verarbeiten. Ich glaube, dies ist definitiv ein Fehler (der schon lange besteht), obwohl Xcode 6.1 bereits ein Upgrade von Xcode 6.0.1 ist.

Leonard
quelle
1

Für mich habe ich die Xcode-App gelöscht und erneut heruntergeladen und installiert. Damit war das Problem zumindest jetzt gelöst.

Tzegenos
quelle
1

Xcode-Indizierung in der Regel für Ihren Code für Vorschläge und automatische Vervollständigung unter anderem, z. B. Hilfe bei Storyboards und umgekehrt. Um Ihr xcode-Projekt zu beschleunigen, können Sie es über das Terminal aus- und wieder einschalten

Deaktivieren Sie die Indizierungsstandards.
Schreiben Sie com.apple.dt.XCode IDEIndexDisable 1 Aktivieren Sie die Indizierungsstandards. Schreiben Sie com.apple.dt.XCode IDEIndexDisable 0

Aber besserer Ansatz, um einen schnellen Mac mit gutem RAM zu verwenden.

Ballu
quelle
2
Das Deaktivieren der Indizierung lähmt Xcode erheblich und sollte nicht durchgeführt werden. Jemandem zu sagen, er solle einen neuen Mac kaufen, sollte niemals die Antwort sein. Ein 2 Jahre alter Laptop sollte in der Lage sein, mit dem neuesten Xcode umzugehen.
Knight0fDragon
macOS 10.13 Beta 7 führte etwas ein, das sowohl Xcode 9 Beta 6 als auch Xcode 8 zum Absturz bringt, sobald der Indexer ausgeführt wird. Das Ausschalten war die einzige Möglichkeit, Xcode auch mit einer verkrüppelten Version weiter zu verwenden.
Pegolon
0

Wenn es Ihnen nichts ausmacht, zu 6.0.1 zurückzukehren, bis sie es herausgefunden haben, hat das für mich funktioniert. Ich hatte das gleiche Problem mit 6.1 und 6.1.1. Jetzt bin ich gut. Ich werde 6.2 versuchen, wenn es herauskommt.

Frühere Versionen der Apple-Software finden Sie auf der offiziellen Entwickler-Website hier: https://developer.apple.com/downloads/index.action

Wenn Sie dies tun, müssen Sie zuerst Ihre aktuelle Kopie von Xcode löschen.

JeremyGranger
quelle
0

Ich verwende Xcode 6.1.1 mit schnellen Dateien auf genau demselben MacBook Pro.

Als ich einem 3D-String-Array immer wieder Zeilen hinzufügte, wurde Xcode plötzlich unbrauchbar und jetzt kann ich nichts mehr tun.

Ich werde versuchen, auf 6.1 zurückzukehren, und hoffentlich wird das Problem behoben sein.

gardner888
quelle
Ich habe das gleiche Problem. Nach dem Hinzufügen einer Reihe von Wörterbüchern wurde xcode unbrauchbar ... Haben Sie eine Lösung gefunden?
Almazini
Ich ging zurück zu Xcode 6.1, was besser funktionierte. Es blieb nicht für immer beim Indizieren hängen, aber manchmal tippte ich und holte den Wasserball für 4 Sekunden. Insgesamt konnte ich genug codieren, um Dinge zu erledigen. Ich habe keinen meiner Codes geändert. Obwohl auf Xcode 6.1 der Akku des MacBook Pro nicht allzu stark betroffen zu sein schien, ist auf meinem MacBook Air Mitte 2013 mit 6.1.1 die Akkulaufzeit absolut schlecht. Es dauert von ~ 12 Stunden bis 2 Stunden, wenn ich Xcode starte.
gardner888
0

Ich sehe dies in Xcode 6.3.2. Ich hatte wirklich gehofft, dass ein Jahr nach der Veröffentlichung der Compiler funktionieren würde, aber leider.

Wenn keine der oben genannten Lösungen funktioniert, überprüfen Sie Ihren Code auf syntaktische Fehler. Während des Refactorings habe ich einen Abschluss extrahiert, aber vergessen, die Parameter zu qualifizieren:

    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 }

Wenn ich durch die Arbeit in Swift etwas gelernt habe, muss ich inkrementell arbeiten, um zu vermeiden, dass ich zu viel zurückverfolgen muss, um den fehlerhaften Code zu finden.

Chris Conover
quelle
0
  1. Ist Ihr Indexstatus ein "Indikatorkreis" oder ein "Fortschrittsbalken"?
  2. Wenn es sich um einen "Indikatorkreis" handelt, bedeutet dies, dass er bereits am Anfang feststeckt.
  3. Öffnen Sie und überprüfen Sie mit Ihren anderen Projekten, ob sie alle gleich sind. Dies bedeutet, dass es sich um ein Systemproblem handelt.
  4. Starten Sie einfach Ihren Computer neu und alles wird gut.
Weidian Huang
quelle
0

Ich benutze Xcode 8.2 und endete auch mit diesem Problem. Es begann, nachdem ich eine komplexe Tupelvariable definiert hatte - ein Array von Tupeln mit einem Subarray von Tupeln. Die Dinge werden sehr langsam, wenn das Subarray von Tupel eine Eigenschaft hat, die programmgesteuert berechnet wird.

Wie einige andere Antworten feststellten, dauert die Indizierung ewig, und ich glaube, sie versucht, auf die Typen der Variablen zu schließen.

Ich habe das Problem zuerst gelöst, indem ich die Variable mit den enthaltenen Typen klar definiert habe. Wenn ich die Eigenschaft aktualisiere, berechne ich sie zuerst und weise sie dann dem Tupel zu, anstatt sie bei der Definition der Variablen zu berechnen.

Hier ist ein Beispielcode.

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)
])]

Die Quintessenz ist, dass Xcode keine komplexen Strukturen ableiten darf.

Q Liu
quelle
0

Ich hatte das gleiche Problem. Mein Xcode ist 8.2.1. In meinem Fall wollte ich jedoch ein Array von Wörterbüchern mit 33 Schlüssel-Wert-Paaren erstellen. Ich habe Folgendes getan, was bei der Indizierung stecken geblieben ist:

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)
}

Folgendes hat bei mir funktioniert:

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)
}
Trup
quelle
0

Ich hatte auch dieses Problem und löste es, indem ich Ausdrücke mit dem Operator "+" entfernte / änderte.

Ich habe das geändert:

var mainArray = arrayOne + arrayTwo + arrayThree + arrayFour + arrayFive

Dazu:

var mainArray = arrayOne
mainArray += arrayTwo
mainArray += arrayThree
mainArray += arrayFour
mainArray += arrayFive

Es hat das Problem gelöst.

Meine Maschine ist Ende 2013 ein maximaler MBP

Casey Laris
quelle
Genau meine Erfahrung. Es hängt mit perfektem Swift-Code, und die einzige Möglichkeit, dies zu beheben, besteht darin, den Code zu ändern.
Gnasher729
0

Möglicherweise möchten Sie auf Xcode 6.1.1 aktualisieren

Es wurde offiziell veröffentlicht und für uns das Indexierungsproblem gelöst. In der Update-Beschreibung heißt es, dass sie Stabilitätskorrekturen angewendet haben, sodass es sehr wahrscheinlich ist, dass sie sich stabiler verhalten.

Engel Naydenov
quelle
7
Interessant. Für mich 6.1.1 eingeführt das endlose Indizierung Problem, mit einem Projekt , das fein in 6.1 Eröffnung wurde. Zeichen
Pascal Bourque
Aha. In unserem Fall haben wir auch Ausdrücke vereinfacht und Klassengrößen mithilfe von Erweiterungsklassen reduziert. Was ziemlich lächerlich ist, dass wir es tun mussten, aber es ist das, was wir tun mussten. Und es scheint vorerst den Trick zu tun. Durch das Auskommentieren von Zeilen haben wir auch eingegrenzt, welcher Teil des Codes tatsächlich "übermäßig komplex" ist, wie es der Swift-Compiler denkt, und die Komplexität so weit wie möglich reduziert. Ich hoffe, sie werden das bald beheben, da es ziemlich nervig ist.
Angel Naydenov
0

Die Xcode 6.2 Beta hat das Problem für mich behoben. Nicht blitzschnell, aber zumindest nicht für immer indiziert. Die Beta wird nicht über Ihre reguläre Xcode-Installation hinaus installiert. Wenn Ihnen die Beta nicht gefällt, können Sie sie einfach löschen.

Verschiedene Xcode-Downloads einschließlich der Beta>

Warren Whipple
quelle
0

Ich hatte Ausdrücke wie:

let x = (value as? Int) ?? someDefault

ebenfalls

guard let x = (dateFormatter().string(from: Date()) + msg + "\n").addingPercentEncoding(...) else { ... }

Es geht also darum, Ihre Datei so umzuschreiben, dass sie nur Ausdrücke auf Kindergartenebene enthält, und das Indizierungsproblem wird behoben.

soger
quelle
0

Xcode 11.5 (11E608c) und immer noch die gleichen Probleme, 6 Jahre nach der ursprünglichen Frage. Ich wünschte, ich könnte Apfel in dieser Frage "markieren", damit sie dieses Durcheinander sehen können. Dies ist ein großes Projekt (> 1000 Dateien) und ich war unter der Uhr. Als ich den Einfrierindex bemerkte, wurde ich mit mehr als 100 Dateien geändert und kann nicht zurück.

Ich habe alles versucht:

  1. Abgeleitete Daten löschen und erstellen
  2. Starten Sie xcode neu, starten Sie den Mac neu
  3. Quelle entfernen und hinzufügen
  4. Gesucht nach Wörterbüchern, Literalen usw. usw.

Das Problem war eine Array-Erstellung:

private var overlayColors: [UIColor] = [UIColor(hex: "#b71c1c"), UIColor(hex: "#4a148c"),
                                        UIColor(hex: "#880e4f"), UIColor(hex: "#1de9b6"),
                                        UIColor(hex: "#f50057"), UIColor(hex: "#311b92"),
                                        UIColor(hex: "#f44336"), UIColor(hex: "#651fff"),
                                        UIColor(hex: "#d500f9"), UIColor(hex: "#3d5afe"),
                                        UIColor(hex: "#bf360c"), UIColor(hex: "#0d47a1"),
                                        UIColor(hex: "#006064"), UIColor(hex: "#2979ff"),
                                        UIColor(hex: "#ff6f00"), UIColor(hex: "#1a237e"),
                                        UIColor(hex: "#795548"), UIColor(hex: "#004d40"),
                                        UIColor(hex: "#00e676"), UIColor(hex: "#01579b"),
                                        UIColor(hex: "#33691e"), UIColor(hex: "#827717"),
                                        UIColor(hex: "#76ff03"), UIColor(hex: "#ffc400"),
                                        UIColor(hex: "#e65100"), UIColor(hex: "#00b0ff"),
                                        UIColor(hex: "#ff3d00"), UIColor(hex: "#616161"),
                                        UIColor(hex: "#263238"), UIColor(hex: "#ff1744")]

Was mir geholfen hat, die fehlerhafte schnelle Datei zu entdecken, war, dass ich die folgenden Schritte ausgeführt habe, als die Indizierung von xcode eingefroren wurde

  1. Aktivitätsmonitor öffnen -> "schneller" Prozess -> Prozessinformationen anzeigen -> Dateien und Ports öffnen. Auf diese Weise erhalten Sie eine Liste der Dateien, die dieser Prozess ausführt, und eine Liste der möglichen fehlerhaften Dateien
  2. Ein weiteres nützliches Tool ist dieses Skript SOURCEKIT_LOGGING=3 /Applications/Xcode.app/Contents/MacOS/Xcode &> ~/Documents/xcode.log, mit dem Xcode mit Level 3 ausführlich gestartet und die Protokollierung in der Protokolldatei gestartet wird.
  3. Suchen Sie in der Protokolldatei nach den letzten Einträgen für Ihre schnellen Dateien, z. B .: "My_project / Source / App /"

Es ist keine vollständige Lösung, aber es ist hilfreich, einen Drilldown durchzuführen und zu wissen, wo Sie suchen müssen.

Aktivitätsmonitor öffnen -> "schneller" Prozess -> Prozessinformationen anzeigen -> Dateien und Ports öffnen.

Feuerfalle
quelle