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?
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.
Je devais changer mon "Niveau d'optimisation" en Aucun [-0none]
Cible> Paramètres de compilation> Compilateur Swift> Niveau d'optimisation.
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)
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
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.
Dans mon cas, j'ai changé 3 endroits:
Cible> Paramètres de compilation> Compilateur Swift>
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!
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.
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.
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)
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.
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
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
}
}
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.
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 !
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.
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.
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
La solution de Maxwell vous donne l'indice le plus proche.
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.")
})