3

全面披露:

我不是受过良好教育的程序员,我的全部编程经验都在 Javascript 和 Objective-C 中。

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


我正在编写一个与 Mac 服务器对话的 iPad 应用程序。我想将 MongoDB 用作后端,而 ObjCMongoDB 看起来非常合适,但我无法使用此处的说明使其工作:

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

我的复制步骤:

  1. 从 gitHub 上的 ObjCMongoDB 主页面,单击“Clone in Mac”(我使用 GitHub for Mac 来处理下载)

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

    git submodule update
    
  3. 然后:

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

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

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

  7. 将项目中src的名字改成mongo-c-driver

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

    • bson.c
    • 编码.c
    • 数字.c
    • mongo.c
    • md5.c
    • 环境.c

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

    • ObjCMongoDB/BSON
    • ObjCMongoDB/Mongo
    • ObjCMongoDB/OrderedDictionary

根据分步指南,我现在应该能够构建和运行我的项目,但是有错误。

  • 首先,来自MongoConnection+Diagnostics.h

    #import <ObjCMongoDB/ObjCMongoDB.h>
    

    我目前没有一个名为ObjCMongoDB的框架,所以这显然会失败。

  • 更令人困惑的是这个漂亮的错误,然后是有问题的 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个论点......


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

4

1 回答 1

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 驱动程序(我的 fork 为 v0.9.6,但下一个版本将使用正式版本)。我在自述文件中添加了有关此步骤的注释。

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

于 2013-05-09T17:26:16.947 回答