我有一个现有的模型类,我想用 Parse 进行管理,理想情况下是通过将其超类从 NSObject 更改为 PFObject。但这是一个真实世界的模型类,在设计时没有考虑 Parse,因此它提出了许多挑战。
挑战
挑战是:
- 这个类在 Swift 中。
- 此类具有存储属性和计算属性。(所以 Parse 当然应该只管理存储的属性。)
- 一些属性包含其他自定义模型类的实例数组
- 其中一些自定义类本身包含 User 对象,这些对象应由 Parse 管理。
这些事情中的每一件事似乎都需要特殊处理才能在 Parse 中正确处理,Parse 的文档对这些问题进行了简要说明。
现有模型类层次结构
举个例子,我的课是这样的:
// I’d like to change this to be a PFUser subclass.
class User : NSObject { /* an ordinary user object */ }
// And this to be a PFObject subclass
class Tango : NSObject {
var user:User // Presumably, a Parse "Pointer" to a PFUser
var opponent:Participant
var info:NSString?
var watchers:NSArray // an array of Participants
var duration:NSTimeInterval? // (notice this is an optional value type, in accessible from Objc)
// various methods
}
// a custom class which contains a User
class Participant : NSObject
{
var status:String
var user:User // a Pointer to a PFUser?
// etc..
}
关键问题
所以我在这里有几个关键问题:
- 是否应该将所有对 User 的引用都替换为
Pointer
sUser
的子类PFUser
? - 我是否需要用像 NSDictionary 这样的普通旧 Cocoa 类型替换 Participant?或者有没有办法只为 Parse 的内部序列化目的提供与 NSDictionary 的相互转换?
- 是否有针对 swift-only 类型的任何规定,例如
Optional<NSTimeInterval>
? 或者这是另一种情况,其中有一个扩展点来提供与 Parse 可以处理的数据类型的相互转换? - 如何对参与者数组进行建模?参与者中的用户对象?
- 考虑
Tango
到使用 .
我对最大查询灵活性或最大性能不感兴趣。我对可以可靠工作的最快的东西感兴趣,并且需要对现有代码进行最少的重写,这取决于现有的类层次结构。我知道这种User / Tango
关系可以描述为多对多,这就是PFRelation
目的,但我的印象是需要重新设计才能使用它。
换句话说,我真的希望我可以避免用设计为非规范化表的新类层次结构替换我的整个模型层,以供 Parse 使用。我有适用于当前结构的现有代码,并且我试图在不破坏任何已经存在的情况下适应 Parse。
那么这些关键问题是否适合为 Parse 改进这个类?处理它们的正确方法是什么?