簡體   English   中英

保存用戶A / C詳細信息以從設備上的分析中脫機使用。 迅捷3

[英]Saving User a/c details from parse on device for offline use. Swift 3

我已經設置了解析和所有功能,可以根據需要完美地進行注冊。 但是之后,我無法在設備上重新獲取用戶詳細信息以供離線使用。

用戶登錄/注冊后,我需要脫機使用那些對象。

類名: User

對象:

  1. coverPhotoImage.png (另存為File)

  2. profilePictureImage.png (另存為File)

  3. usersUsername :字符串

  4. username / email :字符串

  5. firstName :字符串

  6. middleName :字符串

  7. lastName :字符串

  8. mobileNumber :字符串

  9. birthDate :字符串

  10. gender :字符串

  11. about :字符串

我試圖使用UserDefaults.standard.set(_variable name_, forKey: "String")來存儲它UserDefaults.standard.set(_variable name_, forKey: "String")但是沒有用。 :\\

這就是我反復得到的。 1]

這是我寫的:

@IBAction func loginButtonPressed(_ sender: AnyObject) {

    activityIndicator = UIActivityIndicatorView(frame: CGRect(x: 0, y: 0, width: 50, height: 50))
    activityIndicator.center = self.view.center
    activityIndicator.hidesWhenStopped = true
    activityIndicator.activityIndicatorViewStyle = .gray
    activityIndicator.layer.zPosition = 1
    view.addSubview(activityIndicator)
    activityIndicator.startAnimating()
    UIApplication.shared.beginIgnoringInteractionEvents()

    if email.text == "" || password.text == "" {

        createAlert(title: "Error", message: "Please enter your username & password!")

        self.activityIndicator.stopAnimating()
        UIApplication.shared.endIgnoringInteractionEvents()

    } else {

        PFUser.logInWithUsername(inBackground: email.text!, password: password.text!, block: { (suser, error) in



            if error != nil {

                var displayErrorMessage = "Some Error Occured! Please Try Again Later!"

                if let errorMessage = error as? NSError {
                    displayErrorMessage = errorMessage.userInfo["error"] as! String
                }
                self.createAlert(title: "Dang it!", message: displayErrorMessage)

                self.activityIndicator.stopAnimating()
                UIApplication.shared.endIgnoringInteractionEvents()

            } else {

                self.performSegue(withIdentifier: "toMainFunction", sender: nil)

                let query = PFUser.query()

                query?.findObjectsInBackground(block: { (objects, error) in

                    if error != nil {

                        print(error)

                    } else if let users = objects {

                        for object in users {

                            if let user = object as? PFUser {

                                if user.objectId != PFUser.current()?.objectId {

                                    if let email = user.username {
                                        UserDefaults.standard.set(email, forKey: "email")
                                    }

                                    if let coverFile = user["coverPhoto"] {
                                        UserDefaults.standard.set(coverFile, forKey: "coverPhoto")
                                    }

                                    if let profileFile = user["profilePicture"] {
                                        UserDefaults.standard.set(profileFile, forKey: "profilePicture")
                                    }

                                    if let firstName = user["firstName"] {
                                        UserDefaults.standard.set(firstName, forKey: "firstName")
                                    }

                                    if let middleName = user["middleName"] {
                                        UserDefaults.standard.set(middleName, forKey: "middleName")
                                    }

                                    if let lastName = user["lastName"] {
                                        UserDefaults.standard.set(lastName, forKey: "lastName")
                                    }

                                    if let mobileNumber = user["mobileNumber"] {
                                        UserDefaults.standard.set(mobileNumber, forKey: "mobileNumber")
                                    }

                                    if let birthday = user["BirthDate"] {
                                        UserDefaults.standard.set(birthday, forKey: "BirthDate")
                                    }

                                    if let gender = user["gender"] {
                                        UserDefaults.standard.set(gender, forKey: "gender")
                                    }

                                    if let aboutYou = user["about"] {
                                        UserDefaults.standard.set(aboutYou, forKey: "about")
                                    }

                                    if let username = user["usersUsername"] {
                                        UserDefaults.standard.set(username, forKey: "username")
                                    }

                                    gloFirstName = UserDefaults.standard.object(forKey: "firstName") as! String
                                    gloMiddleName = UserDefaults.standard.object(forKey: "middleName") as! String
                                    gloLastName = UserDefaults.standard.object(forKey: "lastName") as! String
                                    gloMobNumber = UserDefaults.standard.object(forKey: "mobileNumber") as! String
                                    gloEmail = UserDefaults.standard.object(forKey: "email") as! String
                                    gloUName = UserDefaults.standard.object(forKey: "username") as! String
                                    gloBirthDate = UserDefaults.standard.object(forKey: "BirthDate") as! String
                                    gloGenderStr = UserDefaults.standard.object(forKey: "gender") as! String
                                    gloAbout = UserDefaults.standard.object(forKey: "about") as! String

                                    if let coverImageData = UserDefaults.standard.object(forKey: "coverPhoto"),
                                        let coverPhoto = UIImage(data: coverImageData as! Data){

                                        gloCoverImage = coverPhoto

                                    }


                                    if let profileImageData = UserDefaults.standard.object(forKey: "profilePicture"),
                                        let profilePicture = UIImage(data: profileImageData as! Data){
                                        gloProfilePicture = profilePicture

                                    }


                                }

                            }

                        }

                    }

                })

                self.activityIndicator.stopAnimating()
                UIApplication.shared.endIgnoringInteractionEvents()

            }

        })

    }

}

我在這里束縛。

編輯:

斷點

編輯#2:

在此處輸入圖片說明 在此處輸入圖片說明 在此處輸入圖片說明

突出顯示的代碼:

 let query = PFUser.query()

                query?.findObjectsInBackground(block: { (objects, error) in

                    if error != nil {

                        print(error)

                    } else if let users = objects {

                        for object in users {

                            if let user = object as? PFUser {
                                //-------------------------------------------------------------------------------------//
                                if user.objectId != PFUser.current()?.objectId {

                                    if let email = user.username {
                                        UserDefaults.standard.set(email, forKey: "email")
                                    }

                                    if let coverFile = user["coverPhoto"] {
                                        UserDefaults.standard.set(coverFile, forKey: "coverPhoto")
                                    }

                                    if let profileFile = user["profilePicture"] {
                                        UserDefaults.standard.set(profileFile, forKey: "profilePicture")
                                    }

                                    if let firstName = user["firstName"] {
                                        UserDefaults.standard.set(firstName, forKey: "firstName")
                                    }

                                    if let middleName = user["middleName"] {
                                        UserDefaults.standard.set(middleName, forKey: "middleName")
                                    }

                                    if let lastName = user["lastName"] {
                                        UserDefaults.standard.set(lastName, forKey: "lastName")
                                    }

                                    if let mobileNumber = user["mobileNumber"] {
                                        UserDefaults.standard.set(mobileNumber, forKey: "mobileNumber")
                                    }

                                    if let birthday = user["BirthDate"] {
                                        UserDefaults.standard.set(birthday, forKey: "BirthDate")
                                    }

                                    if let gender = user["gender"] {
                                        UserDefaults.standard.set(gender, forKey: "gender")
                                    }

                                    if let aboutYou = user["about"] {
                                        UserDefaults.standard.set(aboutYou, forKey: "about")
                                    }

                                    if let username = user["usersUsername"] {
                                        UserDefaults.standard.set(username, forKey: "username")
                                    }

                                    gloFirstName = UserDefaults.standard.object(forKey: "firstName") as! String
                                    gloMiddleName = UserDefaults.standard.object(forKey: "middleName") as! String
                                    gloLastName = UserDefaults.standard.object(forKey: "lastName") as! String
                                    gloMobNumber = UserDefaults.standard.object(forKey: "mobileNumber") as! String
                                    gloEmail = UserDefaults.standard.object(forKey: "email") as! String
                                    gloUName = UserDefaults.standard.object(forKey: "username") as! String
                                    gloBirthDate = UserDefaults.standard.object(forKey: "BirthDate") as! String
                                    gloGenderStr = UserDefaults.standard.object(forKey: "gender") as! String
                                    gloAbout = UserDefaults.standard.object(forKey: "about") as! String

                                    if let coverImageData = UserDefaults.standard.object(forKey: "coverPhoto"),
                                        let coverPhoto = UIImage(data: coverImageData as! Data){

                                        gloCoverImage = coverPhoto

                                    }


                                    if let profileImageData = UserDefaults.standard.object(forKey: "profilePicture"),
                                        let profilePicture = UIImage(data: profileImageData as! Data){
                                        gloProfilePicture = profilePicture

                                    }


                                }//-----------------------------------------------------------------------------//

                            }

                        }

                    }

                })

沒關系,解決了。 這個

if user.objectId != PFUser.current()?.objectId {

應該是這個

if user.objectId == PFUser.current()?.objectId {

因為我需要顯示當前登錄的帳戶詳細信息。

同樣,圖像也無法保存到UserDefaults 因此,只需在每次打開應用程序時加載它,並將其存儲在var myVariableName = UIImage()再加上很少的if語句檢查,就可以將其強制展開為: var myVariableName = UIImage()!

不管怎么說,還是要謝謝你!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM