1

我在我的 Mac 应用程序中使用 couchbase lite。我有一个以树数据结构显示类别的源列表。每个类别都是一个具有标题和子属性的对象,该属性是一个可变数组。

模型头看起来像这样:

#import <CouchbaseLite/CouchbaseLite.h>

@interface SBCategory : CBLModel <NSPasteboardWriting, NSPasteboardReading>

@property(copy) NSString* uuid;
@property(copy) NSString* title;
@property(copy) NSDate* created_at;
@property(assign) BOOL isHeader;
@property (readonly, copy) NSMutableArray* children;

@end

我没有使用 nstreecontroller,只是上面提到的对象数组。关于如何将其存储在数据库中,我真的一直在绞尽脑汁。我应该单独存储每个对象吗?我应该尝试将整个结构序列化为 json 并存储它吗?我应该使用树控制器吗?是否提供帮助方法来保存数据?对此的建议非常感谢。我真的很想听听一些 SOF 专家的意见,他们将如何做到这一点。

4

1 回答 1

0

您可以将每个模型单独存储在 CBL 文档中。您只需要保留对根模型的引用或保留其 documentId。

您还可以使用嵌套模型将完整树存储在单个文档中。您必须将您的声明更改为:

@interface SBCategory : NSObject <CBLJSONEncoding, NSPasteboardWriting, NSPasteboardReading>

要查看使用 CBLJSONEncoding 的示例,您可以下载 CBL 源代码。但是,在最后一种情况下,对嵌套模型之一的任何更改都将导致您的整个模型树被重写。相反,如果您同时从多个设备修改树,则更容易确保一致性,因为只有一个文档。CBLJSONEncoding 在 NoSql 数据库中更棘手但非常有用。

于 2014-05-29T08:23:08.753 回答