gpt4 book ai didi

ios - 解析具有两个子类的抽象 PFObject

转载 作者:行者123 更新时间:2023-11-29 12:22:13 25 4
gpt4 key购买 nike

我使用 Parse 作为我的后端,我试图让两个子类映射到同一个表。

在我的模型中,我有一个抽象的 Post 类,它符合 PFSubclassing 协议(protocol)并包含几个属性和方法。在我的 Parse 数据库中,我想要一个 Post 表。

Here is some of my Post.h file, to give an idea:

@interface ParsePost : PFObject<PFSubclassing>

@property (strong, nonatomic) PFUser *postedBy;

@property (strong, nonatomic) NSString *text;

@property (strong, nonatomic) PFGeoPoint *location;

@property (strong, nonatomic) PFFile *image;
@property (strong, nonatomic) PFFile *thumbnail;

@property (strong, nonatomic) NSNumber *commentCount;

现在,在我的源代码中,我想要一个 MessageComment 类,代表可以发布的两种类型的帖子。 Messages 和 Comments 共享许多属性和方法,但也有一些差异。我曾希望我可以在根本不知道 Parse 的情况下对 Post 进行子类化,并且只是在我的源代码中使用不同的具体子类来简化开发和应用程序逻辑......但是 Parse 给了我一些错误。

这里是 Message.h(空)

@interface Message : ParsePost


@end

和评论.h

@interface Comment : ParsePost

@property (strong, nonatomic) ParsePost *parentPost;

@end

实现文件包含更多差异,但这对问题来说不重要(我不认为)。既不覆盖 Post+ (NSString *)parseClassName 方法,这似乎是 PFSubclassing 中最重要的部分。

一切如我所愿,但后来我更新了我的 Parse 框架并切换到 CocoaPods 而不是手动添加框架,现在我遇到了一些错误...

当我尝试构建我的程序时,我得到的第一件事是一个错误,提示 '在使用 Parse 之前必须使用 registerSubclass 注册 Message 类。' 现在,由于 Message 继承自 PostPost 注册为子类,我没想到会这样……但我还是遇到了这个问题。

所以盲目地,不是真正理解,只是希望事情会成功,我添加了 + (void)load { [self registerSubclass]; }Message.mComment.m。但是,现在我收到一条错误消息,提示 '已尝试将 Comment 和 Message 都注册为 Post 的 native PFObject 子类。无法确定要使用的正确类,因为它们都不继承自另一个。” 此消息对我来说也没有真正意义...

如果我只注册 Message 那么应用程序加载正常......但我担心这会导致麻烦。

有人能给我解释一下这是怎么回事吗?为什么这之前工作正常,突然间向我抛出错误?我不希望 Parse 甚至担心我将 Post 子类化的事实......它应该只担心我从服务器检索并发送到服务器的 Post 对象,无论我在客户端为本地对象提供什么名称和方法......对吧?

最佳答案

问题在于,当您要求 parse SDK 下载内容时,parse SDK 会提供创建子类实例的功能,因此它需要知道与云数据库中的类关联的唯一类类型。如果您尝试注册多个类,它会感到困惑,因为您要求的是意想不到的东西。

更好的选择是只维护一个具有所有必需属性的 Post 类,然后添加类别以公开特定子类/类型的特殊属性和关联方法以方便创建.

这实际上只允许您使用评论和消息术语,同时允许根据 Post 进行解析。

关于ios - 解析具有两个子类的抽象 PFObject,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30272099/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com