在 Swift 中将 PFObject 转换为 NSString

Convert PFObject to NSString in Swift

问题是在 Parse 上获取存储在不同 类 中的提要评论,实际问题是将正文作为字符串从 class 中获取。

我总是收到一条错误消息 "PFObject is not a subtype of 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;
}]

提前致谢。

好的,回答你的问题。您得到的错误实际上是不言自明的。您正在尝试将 PFObject 转换为 NSString,这当然行不通。

调用时出现错误

var Comment = CommentObjects["body"] as String!

如你所说。发生这种情况是因为您这样定义 CommentObjects

var CommentObjects = Comments

并且Comments

var Comments = [PFObject]() 

这 a) 没有多大意义,b) 会导致您的错误,因为 CommentObjects 实际上是 PFObjects 的数组,因此 CommentObjects["body"] returns a PFObject 您正在尝试将其转换为字符串。

谢谢塞巴斯蒂安,这就是我现在拥有的..

var selectedFeed: PFObject!

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

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