2016-06-21 22 views
0

Es gibt ähnliche Fragen, aber keine, die meine Frage beantworten.Swift: Fehler: Linker-Befehl mit Exit-Code 1 fehlgeschlagen

Ich benutze Swift 2.0 Ich arbeite an einem Projekt, das Längen- und Breitengrad mit CoreLocation zeigt.

Ich benutze auch das Social Framework, um auf Twitter und Facebook zu posten.

Ich bekomme einen Fehler, der sagt "Fehler: Linker-Befehl mit Exit-Code 1 fehlgeschlagen" und dann sagt es mir "(verwenden Sie -v, um Aufruf zu sehen)", aber ich verstehe das nicht.

Ich gehe eine Antwort hier auf SO, um den Ort Dienstleistungen Teil zu schreiben. hier ist der Link https://stackoverflow.com/a/24696878/6140339

hier ist mein Code:

import UIKit 
import Social 
import CoreLocation 

@UIApplicationMain 

class FirstViewController: UIViewController, CLLocationManagerDelegate, UIApplicationDelegate { 


var window: UIWindow? 
var locationManager: CLLocationManager! 
var seenError : Bool = false 
var locationFixAchieved: Bool = false 
var locationStatus : NSString = "Not Started" 

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject : AnyObject]?) -> Bool { 
    initLocationManager(); 
    return true 
} 

func initLocationManager() { 
    seenError = false 
    locationFixAchieved = false 
    locationManager = CLLocationManager() 
    locationManager.delegate = self 
    CLLocationManager.locationServicesEnabled() 
    locationManager.desiredAccuracy = kCLLocationAccuracyBest 

    locationManager.requestAlwaysAuthorization() 
} 

func locationManager(manager: CLLocationManager, didFailWithError error: NSError) { 
    locationManager.stopUpdatingLocation() 
    if (error == true) { 
     if (seenError == false) { 
      seenError = true 
      print(error) 
     } 
    } 
} 

func locationManager(manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) { 
    if (locationFixAchieved == false) { 
     locationFixAchieved = true 
     let locationArray = locations as NSArray 
     let locationObj = locationArray.lastObject as! CLLocation 
     let coord = locationObj.coordinate 

     print(coord.latitude) 
     print(coord.longitude) 
    } 
} 

func locationManager(manager: CLLocationManager, didChangeAuthorizationStatus status: CLAuthorizationStatus) { 
    var shouldIAllow = false 

    switch status { 
    case CLAuthorizationStatus.Restricted: 
     locationStatus = "Restricted Access to location" 
    case CLAuthorizationStatus.Denied: 
     locationStatus = "User denied access to location" 
    case CLAuthorizationStatus.NotDetermined: 
     locationStatus = "Status not determined" 
    default: 
     locationStatus = "Allowed to location Access" 
     shouldIAllow = true 
    } 
    NSNotificationCenter.defaultCenter().postNotificationName("LabelHasBeenUpdated", object: nil) 
    if (shouldIAllow == true) { 
     NSLog("Location to Allowed") 
     //Start location services 
     locationManager.startUpdatingLocation() 
    } else { 
     NSLog("Denied access: \(locationStatus)") 
    } 
} 



@IBAction func postToFacebookButton(sender: UIButton) { 
    if(SLComposeViewController.isAvailableForServiceType(SLServiceTypeFacebook)){ 
     let socialController = SLComposeViewController(forServiceType: SLServiceTypeFacebook) 
     //creates post with pre-desired text 
     socialController.setInitialText("") 

     self.presentViewController(socialController, animated: true, completion: nil) 
    } 
} 


@IBAction func postTweetButton(sender: UIButton) { 
    if(SLComposeViewController.isAvailableForServiceType(SLServiceTypeTwitter)){ 
     let socialController = SLComposeViewController(forServiceType: SLServiceTypeTwitter) 
     //creates post with pre-desired text 
     socialController.setInitialText("") 

     self.presentViewController(socialController, animated: true, completion: nil) 
    } 
} 

override func preferredStatusBarStyle() -> UIStatusBarStyle { 
    return .LightContent 
} 

override func viewDidLoad() { 
    super.viewDidLoad() 
} 

override func didReceiveMemoryWarning() { 
    super.didReceiveMemoryWarning() 
    // Dispose of any resources that can be recreated. 
} 

//layer.cornerRadius layer.cornerRadius 

}

Entire Fehlermeldung:

doppelte Symbol _main in: /Users/Benutzer/Library/Developer/Xcode /DerivedData/FarOut-ekrxzlgzfahpruavmlhyhiwiynum/Build/Intermediates/FarOut.build/Debug-iphonsimulator/FarOut.build/Objects-normal/x86_64/AppDelegate.o /Benutzer/Benutzer/Library/Entwickler/Xcode/DerivedData/F ar0ut-ekrxzlgzfahpruavmlhyhywiynum/Build/Intermediates/FarOut.build/Debug-iphonesimulator/FarOut.build/Objekte-normal/x86_64/FirstViewController.o ld: 1 Duplikat für Architektur x86_64 Clang: Fehler: Linker-Befehl fehlgeschlagen mit Exit-Code 1 (Verwenden Sie -v, um Aufruf zu sehen)

+0

Sie können die Linker-Ausgabe sehen, wenn Sie das letzte Symbol im Projektnavigator wählen (Sprechblase) und erweitern Sie dann Ihr "Build" -Log. Suchen Sie nach dem roten Linkerfehler und klicken Sie, um den Text zu erweitern. Es sollte zeigen, warum der Linker nicht in der Lage war, – Paulw11

Antwort

1

Ihr Code funktioniert gut in meinem Xcode. Ich denke, nach dem Löschen von abgeleiteten Daten, Reinigung und Wiederaufbau funktioniert gut. Noch eine Sache, Sie müssen Code von AppDelegate und ViewController teilen, da sie ihre eigenen Rollen haben.

+0

ich gereinigt, umgebaut und nicht funktioniert. Ich habe xCode neu gestartet, hat nicht funktioniert. Hast du nur Paste kopiert? Ich bin mir nicht sicher, was nicht funktioniert. Von dem, was ich sagen kann, hat es nichts mit meinem Sozialcode zu tun, es hat mit meinem Standortcode zu tun, ich kopierte und fügte es in ein neues Projekt ein und erhielt immer noch denselben Fehler – GabrielMSC

+0

@GabrielMSC Ich erstellte ein neues Projekt der Single View-Anwendung . und löschte dann zwei Dateien (AppDelegate.swift, ViewController.swift). dann erstellt FirstViewController.swift und kopieren einfügen. Könnten Sie den gesamten angezeigten Fehler einfügen? Es gibt zusätzliche Informationen über den Fehler Kommentar. – Paul

+0

Bearbeitete Frage, um die gesamte Fehlermeldung zu enthalten – GabrielMSC

0

So viele verschiedenen Probleme für die gleiche Fehlermeldung. (Linker command failed with exit code 1)

1), wenn Sie zwei same constants in verschiedenen Klassen haben dann auch dieses Problem passiert.

2), wenn Sie versehentlich eine .m file statt .h file in einer Implementierungsdatei importiert haben.

3) Dieser Fehler kann auch auftreten, wenn Sie zwei verschiedene Versionen derselben Bibliothek importiert haben, in diesem Fall entfernen Sie nur die ältere Version und behalten nur eine Version bei.

4) der "other linker flags" in "Project" und nicht in "Targets" hinzugefügt wird. Also, verschieben Sie es auf "Targets", sollte es nicht in "Project" sein.

5) Check it in out Ausbau-> ziel-> Einstellungen-> Suche bauen Aktivieren Sie diese NO in DEBUG bitcode-> set

Check out .. wenn es wie dann einmal tun OK ist folgende .

Menü> Produkt> Sauber ... dann Führen Sie das Projekt

Hoffe, dass es Ihnen hilft .. :)