Swift: ошибка: сбой команды компоновщика с кодом выхода 1

Есть похожие вопросы, но ни один из них не отвечает на мой вопрос.

Я использую Swift 2.0. Я работаю над проектом, который показывает долготу и широту с помощью CoreLocation.

Я также использую социальную платформу для публикации сообщений в Twitter и Facebook.

Я получаю сообщение об ошибке: «Ошибка: команда компоновщика завершилась неудачно, код выхода 1», а затем он сообщает мне «(используйте -v, чтобы увидеть вызов)», но я этого не понимаю.

Я собираюсь ответить здесь на SO, чтобы написать часть служб определения местоположения. вот ссылка https://stackoverflow.com/a/24696878/6140339

вот мой код:

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

}

Полное сообщение об ошибке:

дублирующийся символ _main в: /Users/user/Library/Developer/Xcode/DerivedData/FarOut-ekrxzlgzfahpruavmlhyhiwiynum/Build/Intermediates/FarOut.build/Debug-iphonesimulator/FarOut.build/Debug-iphonesimulator/FarOut.build/Objects user / Library / Developer / Xcode / DerivedData / FarOut-ekrxzlgzfahpruavmlhyhiwiynum / Build / Intermediates / FarOut.build / Debug-iphonesimulator / FarOut.build / Objects-normal / x86_64 / FirstViewController.o ld error: 1 duplic_ate symbol для архитектуры x86_cl. : команда компоновщика не удалась с кодом выхода 1 (используйте -v, чтобы увидеть вызов)


person humans    schedule 21.06.2016    source источник
comment
Вы можете увидеть вывод компоновщика, если выберете последний значок в навигаторе проекта (всплывающее окно), а затем развернете журнал сборки. Найдите красную ошибку компоновщика и щелкните, чтобы развернуть этот текст; он должен показать, почему компоновщик не смог завершить   -  person Paulw11    schedule 21.06.2016


Ответы (2)


Ваш код хорошо работает в моем Xcode. Я думаю, что после удаления производных данных очистка и восстановление будут работать нормально. Еще одна вещь: вам нужно разделить код AppDelegate и ViewController, потому что у них есть свои роли.

person Paul    schedule 21.06.2016
comment
Я чистил, перестраивал и не работал. Я перезапустил xCode, не сработало. Вы только что скопировали пасту? Я не уверен, что не работает. Насколько я могу судить, это не имеет ничего общего с моим социальным кодом, это связано с моим кодом местоположения, я скопировал и вставил его в новый проект и все равно получил ту же ошибку - person humans; 21.06.2016
comment
@GabrielMSC Я создал новый проект Single View Application. а затем удалил два файла (AppDelegate.swift, ViewController.swift). затем создал FirstViewController.swift и скопировал вставку. Не могли бы вы скопировать и вставить всю отображаемую ошибку? Над комментарием об ошибке есть дополнительная информация. - person Paul; 21.06.2016
comment
@GabrielMSC Ошибка говорит о том, что у вас есть повторяющийся символ, аннотация @UIApplicationMain. У вас есть два варианта: удалить файл AppDelegate.swift или переместить код делегата приложения из FirstViewController в AppDelegate. Я предлагаю позже, о чем я упоминал ранее, у AppDelegate есть свои роли. Также смешивание не рекомендуется рекомендациями Apple. - person Paul; 21.06.2016

Так много разных проблем для одного и того же сообщения об ошибке. (_ 1_)

1) если у вас было два same constants в разных классах, то также возникает эта проблема.

2), если вы случайно импортировали .m file вместо .h file в файл реализации.

3) Эта ошибка также может возникнуть, если вы импортировали две разные версии одной и той же библиотеки. В этом случае просто удалите старую версию и оставьте только одну версию.

4) Добавление "other linker flags" в "Project", а не в "Targets". Итак, вы переместите его в «Targets», его не должно быть в «Project».

5) Проверьте это в проекте-> цель-> настройки сборки-> поиск включить биткод-> установить НЕТ в ОТЛАДКЕ.

проверьте это .. если все в порядке, то один раз сделайте следующее.

Меню> Продукт> Очистить ... затем Запустить проект.

Надеюсь, это вам поможет .. :)

person Suraj Sukale    schedule 23.06.2016