2017-01-16 6 views
0

все пытались получить данные из одной таблицы с помощью указателей, например таблица таблицы пользователя и песен, когда вы нажимаете на пользователя, он отображает список песен в таблице композиций, специфичных для этого пользователи идентификатор объекта я попытался с помощью этого метода, но я получаю сообщение об ошибке query.wherekey("" equalTo: (PFUser.current()?.objectId!)!)Передача данных из одной таблицы в другую на PARSE

Вот мой код

 var users = [""] 
    var userIDs = [""] 
    var isFollowing = ["" : true] 

    override func viewDidLoad() { 
     super.viewDidLoad() 
    //load user query 

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

      if error != nil { 

      print(error!) 

      } else if let users = objects { 

       for objects in users { 

        if let user = objects as? PFUser { 

        self.users.append(user.username!) 
        self.userIDs.append(user.objectId!) 

         let query = PFQuery(className: "Followers") 
         query.whereKey("Follower", equalTo: (PFUser.current()?.objectId!)!) 
         query.whereKey("Following", equalTo: user.objectId!) 

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

          if let objects = objects { 
           if objects.count > 0 { 
           self.isFollowing[user.objectId!] = true 

           } else { 

            self.isFollowing[user.objectId!] = false 

           } 
           if self.isFollowing.count == self.users.count { 
           self.tableView.reloadData() 

           } 

          } 

         }) 

        } 

       } 

      } 



     }) 

Спасибо Все

**HERE IS MY CODE FOR THE FIRST VIEW WHERE I AM ABLE TO GET ALL USERS AND SEGUE TO ANOTHER TABLE VIEW CONTROLLER** 

    // 
// users.swift 
// 
// 
// Created by Nawir on 1/17/17. 
// Copyright © 2017 Nawir. All rights reserved. 
// 

import Foundation 
import Parse 

class artistsviewcontroller: UITableViewController { 


    var users = [""] 
    var userIDs = [""] 

    override func viewDidLoad() { 
     super.viewDidLoad() 
     //updating users array 

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

      if error != nil { 

       print(error!) 

      } else if let users = objects { 

       for objects in users { 

        if let user = objects as? PFUser { 

         self.users.append(user.username!) 
         self.userIDs.append(user.objectId!) 

        } 

       } 

      } 


      self.tableView.reloadData() 
     }) 
    } 


    override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 
     return users.count 
    } 

    override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 

     let Usercell = tableView.dequeueReusableCell(withIdentifier: "Cell") as! mTableViewCell 
     Usercell.textLabel!.text = users[indexPath.row] 
     return Usercell 

    } 


    override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { 

     // print("rowtapped: \(indexPath.row)") 



     let ItemlistTableViewController = self.storyboard?.instantiateViewController(withIdentifier: "itemviewscont") as! itemviewscont 



     self.navigationController?.pushViewController(ItemlistTableViewController, animated: true) 




      } 

    override func didReceiveMemoryWarning() { 
     super.didReceiveMemoryWarning() 
     // Dispose of any resources that can be recreated. 
    } 

} 

ВОТ МОЯ ВТОРАЯ TABLEVIEWCONTROLLER

// itemviews.swift 
// 
// 
// Created by Nawir on 1/17/17. 
// Copyright © 2017 Nawir. All rights reserved. 
// 

import Foundation 
import Parse 

class itemviewscont: UITableViewController { 

    var users = [String: String]() 
    var itemname = [String]() 

    override func viewDidLoad() { 
     super.viewDidLoad() 
     //query to get all user data from parse 
     let query = PFUser.query() 
     query?.findObjectsInBackground { (objects, error) in 

      if let users = objects { 
       self.users.removeAll() 
       for object in users { 
        if let user = object as? PFUser { 
         // self.users = [user.objectId!] 
         self.users[user.objectId!] = user.username! 

        } 

       } 

      } 
      //query to make connection 

     let getfollow = PFQuery(className: "Mkitems") 
      getfollow.whereKey("user", equalTo: PFUser.current()!) 
      getfollow.findObjectsInBackground(block: { (objects, error) in 
       if let followers = objects { 
        for object in followers { 
         if let follower = object as? PFObject { 

         let mainuser = follower["User"] 
          let query = PFQuery(className: "Music") 
          query.whereKey("fuser", equalTo: mainuser!) 
          query.findObjectsInBackground(block: { (objects,error) in 
           if let nitems = objects { 
            for object in nitems { 
             if let nitem = object as? PFObject { 
             self.musicname.append(nitem["name_title"] as! String) 
              self.tableView.reloadData() 
             } 
            } 
           } 

          }) 
         } 
        } 

       } 

      }) 

     } 
    } 

override func didReceiveMemoryWarning() { 
     super.didReceiveMemoryWarning() 
     // Dispose of any resources that can be recreated. 
    } 

    // MARK: - Table view data source 

    override func numberOfSections(in tableView: UITableView) -> Int { 
     // #warning Incomplete implementation, return the number of sections 
     return 1 
    } 

    override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 


     return itemname.count 
    } 

    override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 
     let cell = tableView.dequeueReusableCell(withIdentifier: "mscell", for: indexPath) 

     cell.textLabel?.text = itemname[indexPath.row] 

     return cell 

    } 
//dont pass this line its the end! 
} 

СПАСИБО ВАМ ВСЕ

+0

является Последовать указателю? – Cliffordwh

+0

Пользователь - мой указатель в классе – Nawir

ответ

0

Если вы ищете для текущего объекта пользователя (при условии, Последователь является указателем), затем используйте

query.whereKey("Follower", equalTo: PFUser.current()!) 

и нет:

query.whereKey("Follower", equalTo: (PFUser.current()?.objectId!)!) 
+0

спасибо, я пробовал вышеуказанный код, но продолжаю получать поток ошибок 1 exc_Bad инструкции – Nawir