首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用Swift进行子类分析?

用Swift进行子类分析?
EN

Stack Overflow用户
提问于 2014-07-22 22:21:39
回答 3查看 2.3K关注 0票数 3

我想要一个标准的子类来和斯威夫特一起工作。

Bridging-Header.h

代码语言:javascript
复制
#import <Parse/Parse.h>
#import <Parse/PFObject+Subclass.h>
#import <Parse/PFGeoPoint.h>

子类

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

    class func parseClassName() -> String! {
        return "Event"
    }

    override class func load() {
        registerSubclass()
    }
}

获取编译错误,说明该事件不符合PFSubclassing。

有什么建议吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-07-22 23:17:00

看看这条线。以下是对这一问题的解释:

我已经打开了一个bug来分析这一点。基本上,问题在于PFSubclassing.h中的协议定义以这种方式定义这个方法的Parse头文件:+ (instancetype)objectWithoutDataWithObjectId:(NSString )objectId;但是,同样的方法由PFObject+Subclass.h以这种方式实现(注意不同之处: instancetype -> id) + (id)objectWithoutDataWithObjectId:(NSString )objectId;这足以让Swift抱怨。我找到的唯一解决方案是将"id“替换为"instancetype”,从而直接更改框架定义中的标头。如果这样做,代码将编译。

所以,这是你的解决方案,它对我有效;我也遇到了同样的问题:

  • 打开PFSubclassing.h (注意,这是您的Parse目录下的PFSubclassing.h )
  • 查找objectWithoutDataWithObjectId:方法
  • 将方法签名替换为:(id)objectWithoutDataWithObjectId:(NSString *)objectId;
票数 1
EN

Stack Overflow用户

发布于 2015-07-27 18:26:04

查看我的Parse子类生成器GSParseSchema。它可以为您生成Swift和Objective类。

在Swift中,您需要重写初始化函数。

代码语言:javascript
复制
override class func initialize() {
    struct Static {
        static var onceToken : dispatch_once_t = 0;
    }
    dispatch_once(&Static.onceToken) {
        self.registerSubclass()
    }
}

我发现这个自动注册并不总是有效的,所以我也显式地在我的AppDelegate中注册了子类。在用setApplicationId:clientKey:初始化分析之前,一定要先注册

代码语言:javascript
复制
Event.registerSubclass()
票数 2
EN

Stack Overflow用户

发布于 2015-11-03 10:11:51

对于最新版本的Parse 1.9.1和Swift 2.1,适用以下内容:

  • 不需要显示该类是否符合PFSubclassing协议,以下内容就足够了

类事件: PFObject { // code }

  • 如果你使用豆荚,那么你就不需要在任何地方都包含Parse,PFSubclassing

示例可以如下所示:

代码语言:javascript
复制
class Event: PFObject {

// @NSManaged gives you autosuggest and type check
@NSManaged var var1: String? 
@NSManaged var var2: String?

override class func initialize() {
    struct Static {
        static var onceToken : dispatch_once_t = 0;
    }
    dispatch_once(&Static.onceToken) {
        self.registerSubclass()
    }
  }
}

我会尝试你的类生成器,觉得我可以节省很多时间在那里。一直在研究将Swift物体映射到Parse的最佳方法。我从UML类图构建了我的结构,并将Parse DB中的关系集添加到关系图中。虽然这给了我我需要的东西,但不是最好的练习。

使用生成器,并将其设计为4层,第4层为Parse DB,第3-1层为MVC,M由代码和UML类图中所需的逻辑生成。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24898857

复制
相关文章

相似问题

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