类没有初始化者static let dataService(swift)

时间:2016-08-27 19:06:12

标签: swift

dataservice.swift

class DataService - >类数据服务没有初始化程序 static let dataService = DataService() - >数据服务不可能 构造因为它没有可访问的初始化器

class DataService {

static let dataService = DataService()

private var _BASE_REF = FIRDatabase.database().reference()
var fileUrl: String


var BASE_REF: FIRDatabaseReference {
    return _BASE_REF
}

var storageRef : FIRStorageReference {
    return FIRStorage.storage().reference()
    }


func SignUp(username: String, email: String, password: String, data: NSData) {

    FIRAuth.auth()?.createUserWithEmail(email, password: password, completion: { (user, error) in
        if let error = error {
            print(error.localizedDescription)
            return
        }
        let changeRequest = user?.profileChangeRequest()
        changeRequest?.displayName = username
        changeRequest?.commitChangesWithCompletion({ (error) in
            if let error = error {
                print(error.localizedDescription)
                return
            }

        })

        let filePath = "profileImage/\(user!.uid)"
        let metadata = FIRStorageMetadata()
        metadata.contentType = "image/jpeg"

        self.storageRef.child(filePath).putData(data, metadata: metadata, completion: { (metadata, error) in
            if let error = error {
                print("\(error.description)")
                return
            }

            self.fileUrl = (metadata?.downloadURLs! [0].absoluteString)!
            let changeRequestPhoto = user!.profileChangeRequest()
            changeRequestPhoto.photoURL = NSURL(string: self.fileUrl)
            changeRequestPhoto.commitChangesWithCompletion({ (error) in
                if let error = error {
                    print(error.localizedDescription)
                    return
                }else{
                    print("profile updated")

                }

            })
            let appDelegate: AppDelegate = UIApplication.sharedApplication().delegate as! AppDelegate
            appDelegate.login()



        })
    })


}


}

2 个答案:

答案 0 :(得分:0)

导入基金会 导入Firebase 导入FirebaseAuth 导入FirebaseStorage

class DataService {

static let dataService = DataService()

private var _BASE_REF = FIRDatabase.database()。reference() var fileUrl:String

{{1}}

}

答案 1 :(得分:0)

你的fileUrl:字符串要么需要默认值,要么需要在初始化程序中设置。

只需将其值设置为空白字符串“”,并在以后需要时填写。

var fileUrl: String = ""

正确的方法是在初始值设定项中为其赋值,但您可能不知道实例化时的值。所以现在就给它一个空白值。类使用初始值设定项来保证所有属性都具有值,并且该类在创建时完全可以使用。如果您的属性都具有默认值,或者是可选的,则不需要初始值设定项。