ObjCMongoDB坏了吗?我无法让它发挥作用

时间:2013-05-09 16:53:09

标签: objective-c xcode git objcmongodb

完全披露:

我不是一个受过良好教育的程序员,我的整个编程经验都是使用Javascript和Objective-C。

所以现在你知道你正在处理什么。小心翼翼。没有突然的动作。


我正在写一个与Mac服务器对话的iPad应用程序。我想将MongoDB用作后端,而ObjCMongoDB看起来非常合适,但是我无法使用这里的说明来实现它:

https://github.com/noa--/ObjCMongoDB/wiki/GettingStarted

我的重复步骤:

  1. 从gitHub上的主要ObjCMongoDB页面,点击“在Mac中克隆”(我正在使用GitHub for Mac来处理下载)

  2. 从命令行导航到ObjCMongoDB目录并键入:

    git submodule update
    
  3. 然后:

    git checkout v0.9.6
    
  4. mongo-c-driver / src 文件夹复制到XCode Project文件夹

  5. 在XCode中,在项目中创建一个名为“ObjCMongoDB”的新组并选择它

  6. 将步骤4中的 src 文件夹添加到项目中,但不添加到目标。

  7. 将项目中 src 的名称更改为 mongo-c-driver

  8. mongo-c-driver 中的这些文件添加到目标:

    • bson.c
    • encoding.c
    • numbers.c
    • mongo.c
    • md5.c
    • env.c

  9. 在XCode中,再次选择ObjCMongoDB组,并将项目和目标添加到以下文件夹中,选中“为任何添加的文件夹创建组”:

    • ObjCMongoDB / BSON
    • ObjCMongoDB /蒙戈
    • ObjCMongoDB / OrderedDictionary

  10. 根据循序渐进的指南,我应该能够建立&现在运行我的项目,但有错误。

    • 首先,来自 MongoConnection + Diagnostics.h

      #import <ObjCMongoDB/ObjCMongoDB.h>
      

      此时我没有名为 ObjCMongoDB 的框架,所以这显然会失败。

    • 更令人困惑的是this nifty error,其次是相关API:

      int bson_init_finished_data( bson *b, char *data, bson_bool_t ownsData ) {
          _bson_zero( b );
          b->data = data;
          b->dataSize = bson_finished_data_size( data );
          b->ownsData = ownsData;
          b->finished = 1;
          return BSON_OK;
      }
      

      当然似乎期待3个论点......


    所以我很茫然。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

我是ObjCMongoDB的作者。感谢您对图书馆的兴趣以及关于您的问题的单挑。

要解决第一个问题,请将#import中的MongoConnection+Diagnostics.h行更改为#import "ObjCMongoDB.h"。 (在最后一个版本之后,这已在master中修复。)

另一个问题正在发生,因为v0.9.6基于早期版本的Mongo C驱动程序,而不是你正在使用的文件,我猜你是从Github上的10gen存储库下载或克隆的。

C驱动程序设置为子模块,因此当您克隆ObjCMongoDB时,您应该看到一个空的mongo-c-driver文件夹。

从您的存储库根目录,您可以运行此命令:

git submodule update --init

应该加载正确版本的Mongo C驱动程序(我的分支从v0.9.6开始,但下一个版本将使用正式版本)。我在自述文件中添加了关于此步骤的说明。

.[ch]文件的这些版本添加到项目后,应该正确构建。