2017-01-04 4 views
0

ここで頭痛を覚え始めました...私のユーザーが私のアプリケーションにサインすると、名前を解析して新しいクラスを作成しますPFUser.Current()?.objectId!クラスiはすべてのユーザー情報を格納し、ユーザーIDは変更されないため、ユーザーはどのデバイスからでもアクセスできます。私は、ユーザークラスに格納ことの一つは、私の質問に私をリード配列である:私はこの配列をアクセスもできるようにしたいが、これを行うことができる唯一の方法は、使用することです:swissを使ってパースサーバー上のクラス内からobjectIDを取り出す方法

var query = PFQuery(className: "\(PFUser.current()?.objectId!)") // Calling the user class 
    query.getObjectInBackground(withId: "") { (object: PFObject?, error: Error?) in 

     if error != nil { 
      print(error) 

     } else { 

      print(object) 
     } 
    } 

問題クラスUserObjectIDからobjectIDを取得する方法がわかりません。

私は私のユーザーのリストを取得し、配列にユーザ名とIDを追加することができますいくつかのコードが見つかりました:

var query = PFUser.query() 

    query?.findObjectsInBackground { (objects, error) in 

     if let users = objects { 

      for object in users { 

       if let user = object as? PFUser { 

       self.usernames.append(user.username!) 
       self.userids.append(user.objectId!) 

       } 
      } 
     } 
    } 

にはどうすれば同様の検索を行うと、すべての私の個々のuserClass内のObjectIDの代わりを見つけることができますスーパーユーザクラスですか?

答えて

0

ユーザーごとに新しいクラスを作成してもよろしいですか?あなたは1行1列の膨大な量のテーブルで終わるつもりです。あなたの配列を現在の_Userテーブルの列として追加するか、新しいテーブルを作成し、その中にすべてのユーザー配列をポインタで保存するのが最適です。あなたは多くのユーザーを持つテーブルとポインタを持っている場合は

var userId: String = "" 

let userClassName = PFUser.current()!.objectId! 

let query = PFQuery(className: userClassName) 
// as there is only 1 row get the first 
query.getFirstObjectInBackground { (object, error) in 
    if error != nil || object == nil { 
     print("nothing here try again") 
    } else { 
     userId = object?.objectId 
    } 
} 

:行うと、新しいテーブルは、ユーザのOBJECTIDから命名されたならば、あなたがそのクラスを照会することができるはずです言われていること

次の行を参考にしてください。

let userObjectId = PFUser.current()!.objectId! 
query.whereKey("yourPointerName", equalTo: PFObject(outDataWithClassName: "theClassYouWantToQuery", objectId: userObjectId)) 
関連する問題