【问题标题】:iOS How to fetch data for each user parse SwiftiOS 如何为每个用户获取数据解析 Swift
【发布时间】:2018-04-17 06:41:07
【问题描述】:

如何为我想要的用户获取数据。 为此,我想使用我写用户名的文本字段,以及将加载有关用户的所有信息的按钮。 现在我的代码从数据库加载所有用户:

 let query = PFUser.query()
    query?.findObjectsInBackground(block: { (object, error) in
        for objects in object! {
            let user = objects["username"] as! String
            print(user)

        }

    })

我怎样才能为我想要的用户制作它?

【问题讨论】:

    标签: ios swift parse-platform


    【解决方案1】:

    可以像这样在本地过滤用户:

    query?.findObjectsInBackground {(objects, error) in
        let users = objects as? [PFUser]
        for object in (users!.filter { $0.username == something }) {
            // do something
        }
    }
    

    但这是一个非常糟糕的主意,因为您的用户列表可能非常庞大,而且效率极低。如果您使用PFQuery,您可能需要添加一个约束:

    let query = PFUser.query()
    query.whereKey("username", equalTo: something)
    

    现在,当您拨打findObjectsInBackground 时,您只会得到相关结果。

    【讨论】:

      【解决方案2】:

      您正在object 中获取用户列表:

      query?.findObjectsInBackground(block: { (object, error) in
      

      for 循环中放置一个where 子句,通过匹配您所需的用户名来获取单个用户:

          for objects in object! where (objects["username"] as! String) == "Your_Text_Field.text" {
              print(objects)
      
              let userName = objects["username"] as! String
              print(userName)
          }
      

      如果您不想匹配确切的名称,而是想通过输入文本搜索来获取用户列表,那么您可以应用过滤器:

          query?.findObjectsInBackground {(object, error) in
              if let users = object as? [PFUser] {
                  let filteredUsers = users.filter { $0.username.contains("Your_Text_Field.text") }
                  print(filteredUsers)
              }
          }
      

      【讨论】:

      • 二元运算符'=='不能应用于'Any!'类型的操作数和“字符串”
      • @Andrew,只需将objects["username"] 转换为String。我已经更新了我的答案。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-16
      • 1970-01-01
      相关资源
      最近更新 更多