web-dev-qa-db-fra.com

GM publication de Xcode 6 compile

Je viens de télécharger la version GM de Xcode 6 et celle-ci ne se compilera pas avec cette erreur:

Command /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swiftc failed with exit code 1

Des idées pour résoudre le problème?

28
bhzag

Cette erreur peut survenir pour de nombreuses raisons. Il s'agit donc d'un indice de débogage. Vous voudrez peut-être essayer d'utiliser xcodebuild dans la ligne de commande. Il vous donnera des détails sur quels fichiers sont les coupables. 

Pour ce faire, ouvrez Terminal et accédez au dossier de votre projet. Une fois là-bas, tapez 

xcodebuild -project YourProject.xcodeproj -scheme YourScheme

ou si vous travaillez dans un espace de travail

xcodebuild -workspace YourProject.xcworkspace -scheme YourScheme

Beaucoup de messages peuvent apparaître, mais à la fin de la sortie, vous devriez voir les fichiers spécifiques à l'origine du blocage. De retour dans XCode, allez dans ces fichiers et commencez à jouer avec la syntaxe Swift pour voir ce qui se passe. Dans mon cas, cela avait à voir avec la fonction setAttributeString, mais j'ai vu d'autres personnes avoir des problèmes avec! et ?. 

J'espère que cela vous mènera dans la bonne direction.

70
Maxwell

Je devais changer mon "Niveau d'optimisation" en Aucun [-0none]

Cible> Paramètres de compilation> Compilateur Swift> Niveau d'optimisation.

10
Byron Coetsee

Mon cas était un peu différent et impliquait des enums et des optionnels. Pour la simplicité permet de définir

enum Animal {
    case Dog
    case Cat
}

func exampleAction(animal: Animal) {}

exampleAction(.Cat)

Cela fonctionnera bien. Cependant, dès que j'ai rendu l'argument facultatif, l'erreur a commencé à apparaître. Donc, ce code ne fonctionnera pas:

func exampleAction(animal: Animal?) {}

exampleAction(.Cat)

Pour que cela fonctionne, je devais ajouter un nom enum explicite dans l'appel de méthode. Donc, le code suivant a encore fonctionné:

exampleAction(Animal.Cat)
7
Michał Kreft

Je pense que cela s’est produit pour de nombreuses raisons. Ce que j’ai rencontré est cette situation. J'espère que cela pourra vous aider.

dispatch_async(dispatch_get_global_queue( DISPATCH_QUEUE_PRIORITY_DEFAULT, 0) ){ [weak self] in

        // ...
        dispatch_async(dispatch_get_main_queue()) { [weak self] in

            // ...
            return

        }
    }

Dans le code supérieur, il suffit de supprimer "[auto faible]" appelé liste de capture pour supprimer l'erreur du compilateur. Ça marche pour moi.

dispatch_async(dispatch_get_global_queue( DISPATCH_QUEUE_PRIORITY_DEFAULT, 0) ){ [weak self] in

        // ...
        dispatch_async(dispatch_get_main_queue()) {

            // ...
            return

        }
    }

la version de xCode est 6.1.1

3
tounaobun

Si vous utilisez une API qui devait être utilisée dans les versions antérieures d'iOS, vous risquez de rencontrer un échec de construction . Par exemple: Si vous utilisez UI_USER_INTERFACE_IDIOM () au lieu de UIDevice.currentDevice (). UserInterfaceIdiom pour identifier le type de périphérique, obtiendra cette erreur de construction sans indice.

2
evanchin

Dans mon cas, j'ai changé 3 endroits:

Cible> Paramètres de compilation> Compilateur Swift> 

  • Niveau d'optimisation .
    • Debug: Aucun [-Onone]
    • Distribution: Le plus rapide [-O]
    • Sortie: le plus rapide [-O]

Quand j'ai changé juste Debug, j'ai des erreurs du type "Source Kit crashé ..." .__ Cette combinaison de paramètres fonctionne très bien pour moi!

2
Weles

Peut-être le même problème Erreur de compilation Swift dans XCode 6 GM

J’ai eu le même problème, puis j’ai utilisé les anciennes versions de git checkout pour trouver la cause du problème et essayer de trouver le code du problème clé. Mon code de problème clé est quelque chose comme ça

func afunc() {
    class AClass() {
    }
    let ac = AClass()
    //....
}

D'autres codes pourraient causer le même problème, se produire dans Swift Optimization, et le compilateur Swift ne vous indique pas l'emplacement exact. Cela doit être un bug d'Apple.

2
tuoxie007

Beaucoup de gens ont ce problème (moi inclus) en raison de l'optimisation du compilateur. Je ne considère pas que l’optimisation soit une résolution correcte, je souhaite que mon code optimisé soit exécuté aussi rapidement que possible.

ré-exécuter manuellement xcodebuild n'a eu aucun effet positif car il l'a également exécuté sans les optimisations.

Cependant - l'écran d'erreur m'a donné la commande swiftc qui échouait:

/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swiftc -target arm64-Apple-ios8.0 -incremental -module-name SpaceCats -O -sdk /Applic...

Le -O il y a le drapeau d'optimisation.

J'ai relancé toute cette commande dans le répertoire des projets (selon la recommandation de xcodebuild ci-dessus) et parmi tous les détails, j'ai trouvé l'erreur ci-dessous:

{
"kind": "finished",
"name": "compile",
"pid": 10682,
"output": "Bitcast requires both operands to be pointer or neither\n  %228 = bitcast i8* %227 to %VSs20UnsafeMutablePointer, !dbg !1322\nBitcast requires both operands to be pointer or neither\n  %324 = bitcast i8* %323 to %VSs20UnsafeMutablePointer, !dbg !1322\nBitcast requires both operands to be pointer or neither\n  %411 = bitcast i8* %410 to %VSs20UnsafeMutablePointer, !dbg !1322\nBitcast requires both operands to be pointer or neither\n  %498 = bitcast i8* %497 to %VSs20UnsafeMutablePointer, !dbg !1322\nLLVM ERROR: Broken function found, compilation aborted!\n",
"exit-status": 1
}

Si vous voulez qu’il soit placé dans un fichier au lieu de l’écran, ajoutez "2> nom du fichier" à la fin. 

Je devais ensuite trouver le pid (10682) dans le fichier pour voir ce qu'il compilait. J'ai exécuté la commande pour ce pid manuellement et il m'a donné l'erreur pour le fichier spécifique. Ensuite, il s'agit de corriger le code.

2
TPot

Je vois beaucoup de raisons. Ma réponse n’est pas une solution générique, mais simplement un autre cas qui apporte cette erreur. Dans mon cas, il s'agissait de définir le titre d'un bouton comme ceci:

button!.setTitleColor(.whiteColor(), forState: UIControlState.Normal)

au lieu de cela:

button!.setTitleColor(UIColor.whiteColor(), forState: UIControlState.Normal)
2
Julian Król

Dans mon cas, cette erreur était due à un encodage de fichier (UTF8) .Swift incorrect; Résolu par copier-coller du contenu du fichier dans un nouveau fichier.

1

Juste pour dire ceci: je reçois cette erreur chaque fois que je mets [unowned self] dans un bloc dans un bloc, comme ceci:

lazy var someVar: SomeType = {
    self.successBlock = {[unowned self] in
        // ...
    }
}()

La solution consiste à placer le [unowned self] uniquement dans le bloc de niveau le plus élevé. Il semble qu'une référence non possédée à self soit gérée automatiquement pour les blocs au sein de blocs.

Bien sûr, je n'ai pu trouver cette erreur qu'en consultant d'abord le fichier problématique via la réponse de @ Maxwell: https://stackoverflow.com/a/26848000/855680

0
Matthew Quiros

En suivant la suggestion de @ maxvel, j'ai appris que les fonctions Max () et min () ne pouvaient pas être compilées dans le mode de publication. Je l'ai remplacé par mes propres fonctions, comme ci-dessous.

//Swift compiler seems to failing to compile default min and max functions in release 
//mode hence writing my own
//
func maximum<T: Comparable> (one: T, other: T) -> T {
    if one > other {
        return one
    }
    else {
        return other
    }
}

func minimum<T: Comparable> (one: T, other: T) -> T {
    if one < other {
        return one
    }
    else {
        return other
    }
}
0
Raj

J'avais aussi cette erreur. J'ai exécuté la commande dans Terminal, comme suggéré par @Maxwell, et découvert que l'erreur était dans mon fichier GameViewController.Swift. Un peu de recherches et découvert qu'il n'aimait pas le code généré automatiquement ou le code en conflit avec un paramètre de Xcode quelque part

override func supportedInterfaceOrientations() -> UIInterfaceOrientationMask {

    if UIDevice.currentDevice().userInterfaceIdiom == .Phone {
        return .AllButUpsideDown
    } else {
        return .All
    }
}

Dès que j'ai supprimé ce blocage, l'erreur a disparu.

0
Ron Myschuk

Dans mon cas, Xcode a donné l'erreur à cause de la ligne suivante: 

if UI_USER_INTERFACE_IDIOM() ==  UIUserInterfaceIdiom.Phone {


}else {

}

Et pour corriger l'erreur, j'ai défini ceci:

enum UIUserInterfaceIdiom : Int {
    case Unspecified
    case Phone // iPhone and iPod touch style UI
    case Pad // iPad style UI
}

Et puis je l'ai utilisé comme:

 if UIDevice.currentDevice().userInterfaceIdiom == .Phone {

}

Bonne chance ! 

0
AaoIi

Allez dans le dossier: Utilisateurs/utilisateur/Bibliothèque/Développeur/Xcode/DerivedData 

et effacer tout le fichier,

puis nettoyez et analysez,

C'est un travail pour moi.

0
Harris Fu

J'ai le code suivant montrant une erreur de construction dans la version.

if myValue > 5 { myValue = 5.0 }
if myValue < 0 { myValue = 0 }

L'ajout de else entre les instructions si a résolu le problème:

if myValue > 5 { myValue = 5.0 }
else
if myValue < 0 { myValue = 0 }

Démo: https://github.com/exchangegroup/build-error-demo

Xcode version 6.1 (6A1052d). Construit bien dans le débogage. Billet soumis à Apple Bug Reporter.

0
Evgenii

changement 

func tableView(tableView: UITableView!, cellForRowAtIndexPath indexPath: NSIndexPath!) -> UITableViewCell!  

À

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell

et faire la même chose à d'autres comme ça

0
Wstunes

La solution de Maxwell vous donne l'indice le plus proche.

0
Akhlaq Rao

Pour ajouter mon cas ici. J'ai l'erreur décrite chaque fois que je marque la fermeture avec un [moi sans propriétaire], mais que je ne fais jamais référence au moi dans la fermeture elle-même.

Par exemple: 

        request.startWithSuccess({ [unowned self] (req: CBRequest!, object: AnyObject!) -> Void in

            if let result = object["result"] as? [NSObject: AnyObject]
            {
                popup.type = result["email"] == nil ? AuthPopupType.Signup : AuthPopupType.Login
            }
            else
            {
                println("WARNING: Malformed response for kCBCheckUniquenesPath request.")
            }

            }, failure: { (req: CBRequest!, err: NSError!) -> Void in

                println("ERROR: Failure response for kCBCheckUniquenesPath request.")
        })
0
Max Reshetey