在Swift中将PFObject转换为NSString

时间:2015-01-11 06:10:55

标签: ios uitableview swift parse-platform pfquery

问题是在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;
}]

提前谢谢。

2 个答案:

答案 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()被调用。

它有效=)抱歉浪费你的时间..