ios - Xcode 8、Swift 3。DataService 类型的值没有成员 "Sign up"

标签 ios swift xcode swift3

我正在尝试使用 Firebase 制作登录/注册屏幕。我创建了一个用于将数据发送到 Firebase 的 swift 类,并将该类称为“DataService”。我还登录并注册了类(class)。在“DataService”类中,我无法创建多个函数,当我尝试创建时,我收到类似 Value of type DataService has no member "Sign up" 的错误注册功能。但另一个功能运行良好。我在这个类中只能有一个函数(DataService)。

DATASERVICE 类

  import Foundation
  import Firebase
  import FirebaseAuth
  import FirebaseStorage

let rootRef = FIRDatabase.database().reference()

class DataService {

static let dataService = DataService()

private var _BASE_REF = rootRef
private var _PHOTO_REF = rootRef.child("photos")

var BASE_REF: FIRDatabaseReference {
    return _BASE_REF
}

var PHOTO_REF: FIRDatabaseReference {
    return _PHOTO_REF
}

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

var fileUrl: String!



// Share Photo Data

func shareNewPhoto(user: FIRUser, caption: String, data: NSData) {
let filePath = "\(user.uid)/\     (Int(NSDate.timeIntervalSinceReferenceDate))"
 let metaData = FIRStorageMetadata()
    metaData.contentType = "image/jpg"
    storageRef.child(filePath).put(data as Data, metadata: metaData) { (metadata, error) in
        if let error = error {
            print("Error uploading: /\(error.localizedDescription)")

        }

        // Create a Url for data ( Story Photo)

        self.fileUrl = metadata!.downloadURLs![0].absoluteString
        if let user = FIRAuth.auth()?.currentUser {
            let idPhotoRoom = self.BASE_REF.child("PhotoRooms").childByAutoId()
            idPhotoRoom.setValue(["caption": caption, "StoryPhotoUrlFromStorage": self.storageRef.child(metadata!.path!).description, "fileUrl": self.fileUrl])
        }
    }


    // Story Photo (upload and dowload from server)

func fetchDataFromServer(callback:@escaping (StoryPhoto) -> ()) {
    DataService.dataService._PHOTO_REF.observe(.childAdded, with: { (snapshot) in
        let photo = StoryPhoto(key: snapshot.key, snapshot: snapshot.value as! Dictionary<String, AnyObject>)
            callback(photo)

        })



       // Sign Up

func signUp(username: String, email: String, password: String, data: NSData) {
    FIRAuth.auth()?.createUser(withEmail: email, password: password, completion: { (user, error) in
        if let error = error {
            print(error.localizedDescription)
            return
        }

        let changeRequest = user?.profileChangeRequest()
        changeRequest?.displayName = username
        changeRequest?.commitChanges(completion: { (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).put(data as Data, metadata: metaData, completion: { (metadata, error) in
            if let error = error {
                print("\(error.localizedDescription)")
                return
            }
            self .fileUrl = metadata?.downloadURLs![0].absoluteString
            let changeRequestPhoto = user!.profileChangeRequest()
            changeRequestPhoto.photoURL = NSURL(string: self.fileUrl) as URL?
            changeRequestPhoto.commitChanges(completion: { (error) in
                if let error = error {
                    print(error.localizedDescription)
                    return
                }else{
                    print("profile uptaded")
                }
            })

            let appDelegate: AppDelegate = UIApplication.shared.delegate as! AppDelegate
            appDelegate.Login()

        })


    })
}

}


}

}

报名类(class)。在这里,我收到类似 DataService 类型的值没有成员“注册”的错误。

// Register Button

@IBAction func RegisterDidTapped(_ sender: AnyObject) {
    guard let email = emailTextField.text, let password = passwordTextField.text, let username = usernameTextField.text else {
        return
    }

    var data = NSData()
    data = UIImageJPEGRepresentation(profileImage.image!, 0.1)! as NSData

    //Signin up


  Here i am getting Error: (Value of type DataService has no member "sign Up")

    DataService.dataService.signUp(username: username, email: email, password: password, data: data)


 }

}

最佳答案

您的问题是您将函数放入其他函数中。在这种情况下不要这样做。需要从其他代码调用的函数应该是类的顶级函数,而不是嵌入到其他函数中。

并且,不相关的,请使用正确的标准命名约定。方法和变量名称应以小写字母开头。类名以大写字母开头。

关于ios - Xcode 8、Swift 3。DataService 类型的值没有成员 "Sign up",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40578421/

相关文章:

ios - 刷新控制(拉动刷新)滞后?

ios - Xcode 6.4 "Could not download and install iOS 8.3 simulator"

ios - 委托(delegate)仍然为零

json - 如何从 JSON 二维结构(嵌套字典)获取值?

ios - 如何使用 iOS Compression Framework 压缩多个文件?

ios - Realm <结果> 在函数之外丢失数据

ios - ios 7/XCode 5 中对 sqlite 的更改

xcode - OCLint 生成 html 报告

iOS: "recognizer.view.center = CGPointMake(..."的错误效果

ios - Swift Address Book,迭代电子邮件获取错误类型