我正在构建一个签入应用程序,并且无法使用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'的成员”
答案 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()
})
}