我已将PFObject
分类为:
import UIKit
import Parse
class Post: PFObject, PFSubclassing {
class func parseClassName() -> String {
return "Post"
}
}
在AppDelegate应用程序中注册:didFinishLaunchingWithOptions:
Post.registerSubclass()
我正在尝试在tableView中使用该类:
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath, object: PFObject?) -> PFTableViewCell? {
var cell = tableView.dequeueReusableCellWithIdentifier(postCellReuseIdentifier) as? PostCell
if cell == nil {
cell = PostCell(style: UITableViewCellStyle.Default, reuseIdentifier: postCellReuseIdentifier)
}
if let postCell = cell {
// assign post to the cell
postCell.post = object as! Post?
// setup delegate
postCell.delegate = self
return postCell
}
return nil
}
我需要将对象转换为Post,但无法弄清楚如何。我目前收到此错误:
无法将'PFObject'(0x10c856ef8)类型的值转换为'MyApp.Post'(0x10c855670)。
答案 0 :(得分:1)
首先,您需要通过注册实例来确保正确地为PFObject
创建子类。你正在尝试的垂头丧气也是不可能的。您不能将基类的实例向下转换为派生类的实例,除非它只是存储为基类的派生实例。
答案 1 :(得分:0)
我得到了这个工作。子类需要以下内容:
将此添加到您的桥接标题中:
#import <Parse/PFObject+Subclass.h>
创建你的课程:
class MyClass: PFObject, PFSubclassing {
static func parseClassName() -> String {
return "MyParseClass"
}
}
重要提示:确保parseClassName()
中返回的类名与您在Parse.com上创建的类的名称完全匹配。
在AppDelegate中注册子类:application:didFinishLaunchingWithOptions:
MyClass.registerSubclass()
您现在应该能够将PFObject投射到您的班级。