2017-04-24 4 views
0

返されたオブジェクトに基づいて動作するはずのSwiftにPFQuery関数があります。私はエラー== nil、オブジェクトの場合== nilとエラー== nilの場合& &オブジェクト!= nilが、 "otherUser"と "responded"キーが等しいかどうかのように常に動作します。 "otherUser"は "Requests"クラスには見つかりませんが、 "responded"は "False"に等しくなります。 (長すぎたので実際の全長クエリを短縮しました)。Swiftが間違ってPFQueryを読み返して返します

let query = PFQuery(className: "Requests") 
     query.whereKey("otherUser", equalTo: PFUser.currentUser()!.objectForKey("username") as! String) 
     query.whereKey("responded", equalTo: "True") 
     query.findObjectsInBackgroundWithBlock({ (objects, error) -> Void in 
      if error == nil && objects != nil{ 
       print(objects) 
       print("disabling confirm button") 
       self.stopTime = self.defaults.integerForKey("intKey") 
      }else{ 
       print("Did not respond yet.") 
       self.counter = 1200 
       self.storyboard 
      } 
     }) 
} 
+0

あなたはブール値ではなく文字列に 'responded'を比較することになっていますか? また、このクエリは 'error!= nil'を除いて' object == nil'を返すべきではありません。このクエリに一致するオブジェクトが見つからない場合は、空でない配列を返す必要があります。おそらく起きているのでしょうか? –

答えて

0

otherUserが見つかったりrespondedがFalseでない場合であっても、queryはまだエラーを返さない、とobjectsはちょうど空の配列になります。そして、空の配列はゼロではなく、ヒープ内に存在します。

すべてのことを正しく行っている限り、クエリが制約と一致しない場合でも、エラーではなく空の配列が返されます。

クエリで結果が返されたかどうかを確認する場合は、if (objects.count)を使用して、返された結果が空であるかどうかを確認できます。

+0

ありがとうございます – Dups

関連する問題