2016-03-27 3 views
0

対応するUserテーブルを指すポインタカラム(ユーザ)を持つテーブルUserProfileがあります。私はユーザーオブジェクトのUserProfileをつかむ簡単なクエリを構築しようとしています。しかし、クエリはnilを返しています(オブジェクト=私のアプリケーションのユーザーオブジェクト):ポインタの値を解析してnilを返すクエリ

let profileQuery = PFQuery(className: "UserProfile") 
        profileQuery.whereKey("user", equalTo: object) 
        profileQuery.includeKey("user") 
        profileQuery.limit = 1 
        profileQuery.findObjectsInBackgroundWithBlock{ 
         (results: [PFObject]?, error: NSError?) -> Void in 

         if error != nil{ 
          print(error) 
         } else if let results = results as? [PFObject]! { 

          for result in results { 
           self.profile = result 
          } 
         } 
        } 

なぜこのクエリが機能しないのでしょうか?ありがとう!

Mazelのソリューション使用して更新されたコード:

query.findObjectsInBackgroundWithBlock { 
     (objects: [PFObject]?, error: NSError?) -> Void in 

     if error != nil { 

      print(error) 

     } else if let objects = objects as? [PFObject]! { 

      for object in objects { 

     let profileQuery = PFQuery(className: "UserProfile") 
        profileQuery.whereKey("user", equalTo: PFObject(outDataWithClassName: "_User", objectId: "\(object.objectId!)")) 
        //profileQuery.includeKey("user") 
        profileQuery.limit = 1 
        profileQuery.findObjectsInBackgroundWithBlock{ 
         (results: [PFObject]?, error: NSError?) -> Void in 

         if error != nil{ 
          print(error) 
         } else if let results = results as? [PFObject]! { 

          for result in results { 
           self.profile = result 
          } 
         } 
        } 
+0

問題はこの行にあります。profileQuery.whereKey( "user"、equalTo:object)しかし、あなたはオブジェクトであることを共有していないので、とにかく難しいです... –

+0

返信ありがとう!オブジェクトは、私が以前にアプリケーションで実行した別のクエリの結果です。私はそれを含めなかったので、人々を混乱させない。 objectはUserテーブルのPFUserです。だから私の希望は、そのユーザーのUserProfileを取得する別のクエリを実行することです(そのユーザーはクエリ内でここでオブジェクトと呼ばれています)。 – winston

答えて

0

は多分、ポインタが異なって保存されているが、この

profileQuery.whereKey("user", equalTo: PFObject(outDataWithClassName: "_User", objectId: "\(object.objectId!)")) 

を使用しようと、あなたもこのラインprofileQuery.includeKey( "ユーザー")を削除することができます

+0

ありがとう!残念ながら、私は依然として '致命的なエラー:予期せぬことにnilが見つかりました。最新のコードで質問を更新しました。 Xcodeは 'withoutDataWithClassName'を' outDataWithClassName'に変更しました – winston

+0

あなたのオブジェクトはオプションであるかどうか、オブジェクトに変更しようとしました!.objectId!、そしてxcodeをチェックして、それをoutDataWithClassNameに変更しました... –

+0

オプションであるように見える。私の質問を更新しました。オブジェクトをつかむ別のクエリを追加したので、何が起こっているのかが分かりやすくなりました(多くの情報なしでサポートすることは難しいと私は理解しています)。これは役に立ったと思っています – winston

関連する問題