Couchbase Lite 1.1.0-31 LiveQuery具有所有行但所有文档都为NULL

时间:2015-08-27 17:52:12

标签: ios objective-c couchbase couchbase-lite

一直喜欢在我的iOS和Android项目中使用Couchbase来创建Couch文档并将它们复制到远程服务器。不幸的是,自从更新到最新版本的Couchbase Lite以来,我最近遇到了一些麻烦。

在我最近的更新之前,我会设置我的经理和数据库,然后调用initializeQuery以下内容将从数据库中提取所有文档,其数据完好无损,我可以在每个文档中看到documentID和数据doc(仔细检查数据库我看到所有的文档仍然存在,并且它们都有一个字符串type设置):(在Objective C中发布的代码,尽管看到与Swift / Android类似的结果)

 - (void) initializeQuery {
     CBLQuery* query = [_database createAllDocumentsQuery];
     liveQuery = query.asLiveQuery;
     [liveQuery addObserver: self forKeyPath: @"rows" options: 0 context: NULL];
     [liveQuery start];
 }

 - (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context{
     if (object == liveQuery) {

         CBLQueryEnumerator *result = liveQuery.rows;

         NSLog(@"No. 1 - number of rows is %lu", (unsigned long)result.count);

         for (CBLQueryRow *row in result) {
              NSLog(@"No. 2 - what is each row's doc ID: %@", row.documentID);
              NSLog(@"No. 3 - what is each row's document %@", row.document);
         }
     }
 }

现在(自更新到最新的Couchbase Lite)我仍然获得正确的行数(在NSLog No.1上),并获得所有正确的docIds(在NSLog No. 2上),但每行的文档现在是{{ 1}}(在NSLog No.3上)并且所有键/值都不存在。任何人都可以向我解释我是否需要更改某些内容以使我的数据始终保持完整。如果是这样,一个可怜的爱达荷州程序员将欠你一生的债务! (不值得多,这是真的,但这是我必须付出的一切)

1 个答案:

答案 0 :(得分:0)

此错误似乎只发生在allDocument,异步查询中,并且之前由Couchbase Lite开发人员在https://github.com/couchbase/couchbase-lite-ios/issues/755找到并解决,并在构建1.1.1中修复,可在此处获取:http://latestbuilds.hq.couchbase.com/couchbase-lite-ios/release/1.1.1/ < / p>

因此,如果您看到此问题,请检查更新并从1.1.0移至1.1.1。这样做之后,一切都是小狗,独角兽和彩虹!