链接器命令失败,退出代码为 1(使用 -v 查看调用),即使我之前使用过库,也会出现错误

Linker command failed with exit code 1 (use -v to see invocation), error appears even if I used the libraries before

提问人:programmer omar 提问时间:10/25/2023 最后编辑:soundflixprogrammer omar 更新时间:10/25/2023 访问量:85

问:

我在尝试开发我的第一个应用程序时遇到这些错误。请注意,第一个只是一个警告。

找不到或使用自动链接的框架“CoreAudioTypes”:找不到框架“CoreAudioTypes”

未定义的符号: 链接器命令失败,退出代码为 1(使用 -v 查看调用)

这是一个简单的应用程序,它应该扫描条形码并根据是否在数据库中找到扫描的条形码来呈现消息。数据库是静态的。

这些是程序的主要文件,谁能告诉我问题是什么?问题可能出在 ViewController 中。

//  CameraView.swift

import SwiftUI
import AVFoundation

struct CameraViewController: UIViewControllerRepresentable {
    typealias UIViewControllerType = ViewController

    @Binding var scannedResult: String?
    @Binding var showCameraView: Bool
    
    
    func makeUIViewController(context: Context) -> ViewController {
        let controller = ViewController()
        controller.delegate = context.coordinator as? any CameraViewControllerDelegate
        return controller
    }

    func updateUIViewController(_ uiViewController: ViewController, context: Context) {
        // Update the view controller if needed
    }

    func makeCoordinator() -> Coordinator {
        Coordinator(self)
    }

    class Coordinator: NSObject, AVCaptureMetadataOutputObjectsDelegate {
        var parent: CameraViewController

        init(_ parent: CameraViewController) {
            self.parent = parent
        }

        func metadataOutput(_ output: AVCaptureMetadataOutput, didOutput metadataObjects: [AVMetadataObject], from connection: AVCaptureConnection) {
            // Handle barcode scanning and update the scannedResult
            if let barcodeData = metadataObjects.first as? AVMetadataMachineReadableCodeObject, let barcode = barcodeData.stringValue {
                parent.scannedResult = StaticDatabase.database[barcode] ?? "Good to Use"
            }
        }
    }
}
//  QadyatyApp.swift
//  Qadyaty
//
//  Created by Omar Nagy on 24.10.23.
//

import SwiftUI

struct ContentView: View {
    @State private var scannedResult: String?
    @State private var showCameraView = false

    var body: some View {
        NavigationView {
            ZStack {
                Image("Palestine")
                    .resizable()
                    .edgesIgnoringSafeArea(.all)

                VStack {
                    Text("قاطع فأثر صغير خير من عجز ضعيف")
                        .font(.system(size: 18))
                        .foregroundColor(.white)
                        .padding()

                    Text("افحص باركود المنتج لتعرف إن كان في قائمة")
                        .font(.system(size: 18))
                        .foregroundColor(.green)
                        .padding()

                    Text("المقاطعة")
                        .font(.system(size: 48))
                        .foregroundColor(.red)
                        .padding()

                    Spacer()

                    Button(action: {
                        // Open the camera view when the button is tapped
                        showCameraView = true
                    }) {
                        Text("افحص")
                            .font(.title)
                            .fontWeight(.bold)
                            .padding()
                            .background(Color.white)
                            .foregroundColor(.black)
                            .cornerRadius(20)
                    }
                    .fullScreenCover(isPresented: $showCameraView) {
                                            CameraViewController(scannedResult: $scannedResult, showCameraView: $showCameraView)
                                        }

                    Text("DEVELOPED BY OMAR NAGY")
                        .font(.footnote)
                        .foregroundColor(.white)
                        .padding()
                }
            }
            .navigationBarTitle("Main Screen")
        }
    }
}
//  ContentView.swift
//  Qadyaty
//
//  Created by Omar Nagy on 24.10.23.
//

import SwiftUI
import SwiftData
import UIKit
import AVFoundation


struct StaticDatabase {
    static let database = [
        "123456789012": "Boycott",
        "9876543210": "Good to Use"
        // Add more barcode-message pairs as needed
    ]
}



protocol CameraViewControllerDelegate: AnyObject {
    func barcodeScanned(result: String)
}

class ViewController: UIViewController, AVCaptureMetadataOutputObjectsDelegate{
    
    weak var delegate: CameraViewControllerDelegate?
        
    let scanButton: UIButton = {
        let button = UIButton()
        button.setTitle("Scan", for: .normal)
        button.backgroundColor = .systemBlue
        button.setTitleColor(.white, for: .normal)
        button.layer.cornerRadius = 10
        button.translatesAutoresizingMaskIntoConstraints = false
        return button
    }()
    
    let session = AVCaptureSession()
    var video = AVCaptureVideoPreviewLayer()
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        setupUI()
        setupCamera()
    }
    
    func setupUI() {
        view.addSubview(scanButton)
        
        scanButton.centerXAnchor.constraint(equalTo: view.centerXAnchor).isActive = true
        scanButton.bottomAnchor.constraint(equalTo: view.bottomAnchor, constant: -50).isActive = true
        scanButton.widthAnchor.constraint(equalToConstant: 200).isActive = true
        scanButton.heightAnchor.constraint(equalToConstant: 50).isActive = true
        
        scanButton.addTarget(self, action: #selector(scanButtonTapped), for: .touchUpInside)
    }
    
    @objc func scanButtonTapped() {
        if session.isRunning {
            session.stopRunning()
            scanButton.setTitle("Scan", for: .normal)
        } else {
            session.startRunning()
            scanButton.setTitle("Stop", for: .normal)
        }
    }
    
    func setupCamera() {
        guard let device = AVCaptureDevice.default(for: .video) else {
            return
        }
        
        do {
            let input = try AVCaptureDeviceInput(device: device)
            session.addInput(input)
        } catch {
            print(error)
        }
        
        let output = AVCaptureMetadataOutput()
        session.addOutput(output)
        output.setMetadataObjectsDelegate(self, queue: DispatchQueue.main)
        output.metadataObjectTypes = [AVMetadataObject.ObjectType.ean13]
        
        video = AVCaptureVideoPreviewLayer(session: session)
        video.frame = view.layer.bounds
        view.layer.addSublayer(video)
    }
    
    func metadataOutput(_ output: AVCaptureMetadataOutput, didOutput metadataObjects: [AVMetadataObject], from connection: AVCaptureConnection) {
            // Handle barcode scanning and communicate the result through the delegate
            if let barcodeData = metadataObjects.first as? AVMetadataMachineReadableCodeObject, let barcode = barcodeData.stringValue {
                let result = StaticDatabase.database[barcode] ?? "Good to Use"
                delegate?.barcodeScanned(result: result)
            }
        }
    
    func checkBarcode(_ barcode: String) {
        // Simulate a product database check
        let database = ["123456789012": "Boycott"]
        
        if let result = database[barcode] {
            showAlert(title: "Result", message: result)
        } else {
            showAlert(title: "Result", message: "Good to Use")
        }
    }
    
    func showAlert(title: String, message: String) {
        let alertController = UIAlertController(title: title, message: message, preferredStyle: .alert)
        alertController.addAction(UIAlertAction(title: "OK", style: .default, handler: nil))
        present(alertController, animated: true, completion: nil)
    }
}
iOS 的 swift iphone xcode swiftui

评论


答: 暂无答案