在 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()
被调用。
有效 =) 抱歉浪费您的时间..
问题是在 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()
被调用。
有效 =) 抱歉浪费您的时间..