【问题标题】:Getting Thread: signal SIGABRT获取线程:信号 SIGABRT
【发布时间】:2019-01-27 05:58:35
【问题描述】:

构建具有聊天功能的应用并收到 SIGBRT 错误。它似乎没有与 Firebase 数据库对话。我检查了我所有的插座,它们似乎都完好无损,我没有看到任何破损的插座。

我在调试区域遇到的错误是

"2018-08-21 01:09:15.479487-0400 Split App[83668:9375919] *** 由于未捕获的异常“FIRAppNotConfigured”而终止应用程序,原因:“无法获取默认 Firebase 数据库实例。必须调用 @ 987654321@(在 Swift 中为FirebaseApp.configure())在使用 Firebase 数据库之前...... libc++abi.dylib:以 NSException 类型的未捕获异常终止”

class DataService{
static let dataService = DataService()
private var _BASE_REF = Database.database().reference()
private var _ROOM_REF = Database.database().reference().child("rooms")
var BASE_REF: DatabaseReference {
   return _BASE_REF
}
var ROOM_REF:DatabaseReference{
    return _ROOM_REF
}
var storageRef: StorageReference{
    return Storage.storage().reference()
}
var fileURL: String!
// store the thumbnail in database
func CreateNewRoom(user: User, caption: String, data: NSData){
    let filePath = "\(user.uid)/\   
(Int(NSDate.timeIntervalSinceReferenceDate))"

    let metaData = StorageMetadata()
    metaData.contentType = "image/jpg"
    storageRef.child(filePath).putData(data as Data, metadata: metaData){ 
(metadata, error) in if error != nil {
        print ("Error Uploading: \(String(describing: 
error?.localizedDescription))")
        return
        }
        //create a url for data (photo thumbnail image)
          _ = metadata?.storageReference?.downloadURL(completion: error as! 
(URL?, Error?) -> Void)
        if Auth.auth().currentUser != nil {
            let idRoom = self.BASE_REF.child("rooms").childByAutoId()
            idRoom.setValue(["caption": caption,"thumbnailURLFromStorage": 
self.storageRef.child(metadata!.path!).description, "fileURL" : 
self.fileURL])
        }
    }
}

func fetchDataFromServer(callback: @escaping (Room) -> ()){
    DataService.dataService.ROOM_REF.observe(.childAdded){ (snapshot) in
        let room = Room(key: snapshot.key, snapshot: snapshot.value as! 
Dictionary<String, Any>)
     callback(room)
    }
}
func SignUp(username:String, email: String, password: String, firstName: 
String, lastName: String, data: NSData){
    Auth.auth().createUser(withEmail: email, password: password, completion: 
{ (user, error) in
        if  error != nil {
            print(error!)
        }
        else {
            print("Registration Successful")
        }
        let changeRequest = 
Auth.auth().currentUser?.createProfileChangeRequest()
        changeRequest?.displayName = username
        changeRequest?.commitChanges(completion: {(error) in
            if let error = error {
                print (error.localizedDescription)
                return
            }
        })
        let filePath = "profileimage/\(String(describing: 
Auth.auth().currentUser!.uid))"
        let metadata = FirebaseStorage.StorageMetadata()
        metadata.contentType = "image/jpeg"

        self.storageRef.child(filePath).putData(data as Data, metadata:  
metadata, completion: {(metadata, error) in

        if let error = error {
            print ("\(error.localizedDescription)")
            return
        }
            _ = metadata?.storageReference?.downloadURL(completion: error as! 
(URL?, Error?) -> Void)
            if let error = error {
                print (error.localizedDescription)
                return
            }
            else {
                print ("Sweet!")
            }
        let appDelegate: AppDelegate = UIApplication.shared.delegate as! 
AppDelegate
        appDelegate.login()

    })
    }
}

【问题讨论】:

  • 阅读错误信息。 在使用 Firebase 数据库之前必须调用 [FIRApp 配置](Swift 中的 FirebaseApp.configure()) 具有高度描述性。它没有说任何关于网点的事情。

标签: swift firebase firebase-realtime-database sigabrt nsexception


【解决方案1】:

您应该按照以下步骤操作

第 1 步将 Firebase 导入您的 AppDelegate.swift

import Firebase

步骤 2 在 AppDelegate.swift 中的 didFinishLaunchingWithOptions 方法中调用 configure()

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
    // Override point for customization after application launch.
    FirebaseApp.configure()
    return true
}

希望对你有帮助

【讨论】:

  • 是的,有帮助!谢谢!
【解决方案2】:

您尚未配置 firebase。 因此,在您的应用程序委托内部首先 import Firebase 和方法内部 didFinishLaunchingWithOptions 配置 firebase。 通过写一行FirebaseApp.configure()

【讨论】:

    猜你喜欢
    • 2012-11-20
    • 1970-01-01
    • 1970-01-01
    • 2021-05-29
    • 1970-01-01
    • 1970-01-01
    • 2018-11-05
    相关资源
    最近更新 更多