如何在swift中将PFObject添加到tableview

时间:2015-04-21 18:46:45

标签: ios uitableview swift parse-platform

我正在构建一个签入应用程序,并且无法使用Parse存储的访客填写我的tableview。尝试追加对象时出错。我还有一个用户登录,我从Udemy课程。在课程中,他展示了如何显示PFUsers,但我无法使用PFObject进行工作。任何帮助都会很棒。

以下是PFUsers的工作代码。

var users = [""]

override func viewDidLoad() {
    super.viewDidLoad()

    var query = PFUser.query()

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

        self.users.removeAll(keepCapacity: true)

        for object in objects! {

            var user:PFUser = object as! PFUser

            self.users.append(user.username!)

        }

        self.tableView.reloadData()

    })

}

这是PFObjects的非工作代码。

var users = [""]

override func viewDidLoad() {

    super.viewDidLoad()

    var query = PFQuery(className: "TestObject")

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

        self.users.removeAll(keepCapacity: true)

        for object in objects! {

            var guest = object as! PFObject

            self.users.append(guest.foo!)
        }

    })
}

错误显示在该行

self.users.append(guest.foo!)

错误说“'PFObject'没有名为'foo'的成员”

2 个答案:

答案 0 :(得分:0)

使用变量user定义PFUser对象,这将使第一个示例工作(您获得用户的name)第二个示例不起作用,因为您仍然定义PFObject作为user,但尝试访问未定义的name guest

您可以使用第一个示例或更改

var user:PFObject = object as! PFObject

使用

var guest:PFObject = object as! PFObject

无论哪种方式,它对您的代码无关紧要,它只是变量的名称。 此解释将修复您的“使用未解析的标识符'来宾'” 但这不是你唯一的问题,
第一个示例使用的PFUser对象是一种特殊类型的PFObject,PFUser类确实有一个.name,它指的是(显然)用户名。并非每个PFObject都有一个名称,所以你不能只访问PFObject的.name。 Parse有一个很好的documentation about retrieving objects我首先会访问这个文档。如果您仍不清楚这一点,可以打开另一个有关新问题的具体问题。

要从对象中检索数据,您需要使用[]

我们建议我们有一个名为gameScore的类,其中包含以下信息

score: 1337, playerName: “Sean Plott”, cheatMode: false

我们会这样做如下

var gameScore = PFObject(className:"GameScore")
gameScore["score"] = 1337
gameScore["playerName"] = "Sean Plott"
gameScore["cheatMode"] = false
gameScore.saveInBackgroundWithBlock {
  (success: Bool, error: NSError?) -> Void in
  if (success) {
    // The object has been saved.
  } else {
    // There was a problem, check error.description
  }     
}

要检索您需要查询的对象(正如您在帖子中所做的那样) 您收到的数据可以按如下方式提取:

let score = gameScore["score"] as Int
let playerName = gameScore[“playerName"] as String
let cheatMode = gameScore["cheatMode"] as Bool

答案 1 :(得分:-1)

我想通了,我需要将对象标签作为字符串,然后才能将它附加到数组中,然后将其添加到tableview中。

以下是工作代码:

var users = [""]

override func viewDidLoad() {

    super.viewDidLoad()

    var query = PFQuery(className: "TestObject")

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

        self.users.removeAll(keepCapacity: true)

        for object in objects! {

            var foo = object.objectForKey("foo") as? String

            self.users.append(foo!)
        }
        self.tableView.reloadData()
    })
}