问题是在Parse上获取存储在不同类中的Feeds的注释,实际的问题是将该主体从类中取出为String。
我总是得到一个错误,说“PFObject不是NSString的子类型”
var Comments = [PFObject]()
var FeedObjects = self.Feeds[indexPath.row]
var CommentObjects = Comments
var queryComment = PFQuery(className:"Comment")
queryComment.whereKey("post", equalTo: FeedObjects)
queryComment.selectKeys(["body", "author"])
queryComment.orderByAscending("createdAt")
queryComment.findObjectsInBackgroundWithBlock { (objects:[AnyObject]!, error:NSError!) -> Void in
if error == nil {
var Comments = objects as [PFObject]
self.Comments = Comments
}
}
println(Comments)
此阶段的输出是
[<Comment: 0x7ffa98f2a560, objectId: efB384DliK, localId: (null)> {
author = test;
body = test;
}]
提前谢谢。
答案 0 :(得分:0)
好的,回答你的问题。你得到的错误实际上是不言自明的。您正在尝试将PFObject
转换为NSString
,这当然无效。
致电
时会发生错误var Comment = CommentObjects["body"] as String!
如你所说。发生这种情况是因为您定义CommentObjects
,如下所示:
var CommentObjects = Comments
和Comments
是
var Comments = [PFObject]()
这个a)没有多大意义,b)导致你的错误,因为CommentObjects
实际上是PFObjects
的数组,因此CommentObjects["body"]
会返回PFObject
你的错误正在尝试转换为字符串。
答案 1 :(得分:0)
谢谢塞巴斯蒂安,这就是我现在所拥有的......
var selectedFeed: PFObject!
在didSelectRowAtIndexPath
我设置了这个。
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
var FeedObjects = self.Feeds[indexPath.row]
self.selectedFeed = FeedObjects...
创建了func
,用于检索所选行的注释。
func retrieveComments() {
var dateFormatter:NSDateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "dd-MM-yyyy HH:mm"
var queryComment = PFQuery(className:"Comment")
queryComment.whereKey("post", equalTo: selectedFeed)
queryComment.orderByAscending("createdAt")
queryComment.findObjectsInBackgroundWithBlock { (comments:[AnyObject]!, error:NSError!) -> Void in
if error == nil {
for comment in comments {
var commentBody = comment["body"] as String
var commentAuthor = comment["author"] as String
var commentDate = dateFormatter.stringFromDate(comment.createdAt)
}
}
}
}
当showDetailsViewController
出现时retrieveComments()
被调用。
它有效=)抱歉浪费你的时间..