ObjCMongoDB 坏了?我无法让它工作



全面披露:

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

现在你知道你在处理什么了。谨慎行事。不准乱动


我正在写一个iPad应用程序,它可以与Mac服务器对话。我想使用MongoDB作为后端,ObjCMongoDB看起来非常适合,但我不能让它使用这里的指令工作:

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

My repro steps:

  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. 将Project中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/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个参数…


所以我很困惑。

我是ObjCMongoDB的作者。谢谢你对图书馆的兴趣和对你问题的提醒。

解决第一个问题,将"MongoConnection+Diagnostics.h"中的"#import"行改为"#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]文件添加到你的项目中,它应该正确构建。

相关内容

最新更新