首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >解析不使用Swift的PFSubclassing

解析不使用Swift的PFSubclassing
EN

Stack Overflow用户
提问于 2014-08-11 06:05:24
回答 5查看 3.1K关注 0票数 3

我复制了用于子类的Parse Swift示例:

代码语言:javascript
复制
class Armor : PFObject, PFSubclassing {

    override class func load() {
        self.registerSubclass()
    }
    class func parseClassName() -> String! {
        return "Armor"
    }
}

我得到以下错误:

代码语言:javascript
复制
/Parse/Armor.swift:11:1: error: type 'Armor' does not conform to protocol 'PFSubclassing'
class Armor : PFObject, PFSubclassing {
^
__ObjC.PFSubclassing:15:28: note: protocol requires function 'object()' with type '() -> Self!'
  @objc(object) class func object() -> Self!
                           ^
__ObjC.PFSubclassing:23:52: note: protocol requires function 'objectWithoutDataWithObjectId' with type '(String!) -> Self!'
  @objc(objectWithoutDataWithObjectId:) class func objectWithoutDataWithObjectId(objectId: String!) -> Self!
                                                   ^
__ObjC.PFSubclassing:30:27: note: protocol requires function 'query()' with type '() -> PFQuery!'
  @objc(query) class func query() -> PFQuery!
                          ^
__ObjC.PFSubclassing:35:38: note: protocol requires function 'registerSubclass()' with type '() -> Void'
  @objc(registerSubclass) class func registerSubclass()
                                     ^
/Parse/Armor.swift:14:9: error: 'Armor.Type' does not have a member named 'registerSubclass'
        self.registerSubclass()
        ^    ~~~~~~~~~~~~~~~~

我看到了这个答案:https://stackoverflow.com/a/24899411/843151并尝试了这个解决方案,没有运气,我得到了同样的错误。

对为什么会发生这种事有什么建议吗?提前谢谢。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2014-08-11 17:17:39

我需要在目标-C桥接头中导入解析PFObject+Subclass.h。

代码语言:javascript
复制
#import <Parse/PFObject+Subclass.h>
票数 12
EN

Stack Overflow用户

发布于 2015-01-03 18:39:16

使用xCode 6.1.1,我能够在不使用桥接头的情况下实现这个功能。只是:

代码语言:javascript
复制
import Parse 

在舱顶。对于类声明,我确实需要对变量类型使用@NSManaged来使它们成功地链接到Parse类变量。如下所示:

代码语言:javascript
复制
class PSCategory : PFObject, PFSubclassing {
    override class func load() {
        self.registerSubclass()
    }
    class func parseClassName() -> String! {
        return "Category"
    }

    @NSManaged var Name: String
}

然后,在我的查询中,所有的名称都被动态链接:

代码语言:javascript
复制
var query = PSCategory.query() // PFQuery(className: "Category")

query.cachePolicy = kPFCachePolicyCacheElseNetwork // kPFCachePolicyNetworkElseCache
query.maxCacheAge = 60 * 60 * 24  // One day, in seconds.
query.findObjectsInBackgroundWithBlock {
    (categories: [AnyObject]!, error: NSError!) -> Void in
    if error == nil {
        for abstractCategory in categories {
            let category = abstractCategory as PSCategory

            NSLog("Category Name: %@", category.Name)
        }
    } else {
        NSLog("Unable to retrieve categories from local cache or network")
    }
}
票数 3
EN

Stack Overflow用户

发布于 2015-04-11 18:23:13

解析建议初始化()而不是load()

代码语言:javascript
复制
class Armor : PFObject, PFSubclassing {
  override class func initialize() {
    var onceToken : dispatch_once_t = 0;
    dispatch_once(&onceToken) {
      self.registerSubclass()
    }
  }

  static func parseClassName() -> String! {
     return "Armor"
  }
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25236760

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档