2017-05-12 9 views
0

PFUser 객체 정보를 동 기적으로 검색하려고합니다. 그러나 가져 오기를 사용하여 시도했지만 구현 오류가 계속 발생합니다. 예를 들어 : PFUser.currentUser()? objectForKey ("scoreNumber")를 찾고 싶습니다만, 업데이트 된 값을 얻지 못하고 있습니다. 나는 그것을 가져 오기를 사용하여 찾을 것이라고 말했지만, 가져 오기 기능에서 objectForKey를 구현할 수 없습니다.Swift에서 PFUser objectForKey를 동 기적으로 검색하는 방법

시도

var score: String! 
func retrieveScore(){ 
    guard let myUser = PFUser.currentUser() else { return } 
     do{ let data = try myUser.objectForKey("scoreNumber")?.fetch() 
     try scoreNumber = data! as! String 
    }catch{} 
} 

의 일부 당신은 NSUserDefaults에 대한 사용자를 저장하지 말아야 하나

let userScore = PFUser.currentUser()?.objectForKey("scoreNumber") 
let userScore2 = userScore.fetch() 
+0

당신이 로그인있어 사용자가 확실한가요? –

+0

@ ZonilyJame 예, 사용자를 NSUserDefaults로 저장합니다. – Dups

답변

1

또 다른. Parse SDK는 세션 관리에 도움이됩니다. [PFUser logout]`함수를 호출하는 특정 로그 아웃 버튼 만 있으면됩니다.

따라서 가져 오기는 비동기 작업입니다. 즉, 별도의 스레드에서 실행되고 주 스레드는 다음 명령을 계속 실행합니다. 따라서 백그라운드에서 객체를 가져 오는 fetch를 호출했지만 아직 가져 오지 않은 객체의 값에 액세스하려고합니다. fetch 호출 결과를 처리하는 블록 내에서 객체에 액세스해야합니다.

.fetch()과 같은 방식으로 가져 오기를 호출하면 백그라운드에서 실행되지만 데이터가있을 때 또는 가져 오기가 실패한 경우 사용자에게 알리지 않습니다. 이것은 즉시 필요한 데이터를 얻는 좋은 방법이 아닙니다.

당신은 사용할 필요가 fetchInBackgroundWithBlock()

scoreNumber.fetchInBackgroundWithBlock() { 
    (scoreNumber: PFObject?, error: NSError?) -> Void in 
    if error == nil && scoreNumber != nil { 
    print(scoreNumber) 
    } else { 
    print(error) 
    } 
}