【问题标题】:Convert PFObject to NSString in Swift在 Swift 中将 PFObject 转换为 NSString
【发布时间】:2015-01-11 06:10:55
【问题描述】:

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

我总是收到一条错误消息,提示“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;
}]

提前谢谢你。

【问题讨论】:

  • 表格视图的代码其实和你的问题无关吧?尝试缩小您的问题范围,以便人们可以更快地了解您的问题。
  • 错误出现在哪一行?
  • 这里无处可去。当我将 var Comment = CommentObjects["body"] 设置为字符串时!例如
  • 这行不通。 CommentsObjects 是一个 PFObject 数组。我认为您应该在尝试解决此问题之前对其进行一些清理(例如,更多的变量名称,不要交叉分配变量等)。老实说,它看起来有点乱。
  • 我回家看看。不太明白你的直接意思,但让我们看看也许我会在下班后得到它。 Du sagst das alles so leicht ^^

标签: ios uitableview swift parse-platform pfquery


【解决方案1】:

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

调用时出现错误

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

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

var CommentObjects = Comments

Comments

var Comments = [PFObject]() 

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

【讨论】:

    【解决方案2】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多