全面披露:
我不是一个受过教育的程序员,我的全部编程经验是在Javascript和Objective-C。
现在你知道你在处理什么了。谨慎行事。不准乱动
我正在写一个iPad应用程序,它可以与Mac服务器对话。我想使用MongoDB作为后端,ObjCMongoDB看起来非常适合,但我不能让它使用这里的指令工作:
https://github.com/noa--/ObjCMongoDB/wiki/GettingStartedMy repro steps:
从gitHub上的主要ObjCMongoDB页面,单击"克隆在Mac"(我使用gitHub for Mac来处理下载)
从命令行导航到ObjCMongoDB目录并键入:
git submodule update
:
git checkout v0.9.6
将mongo-c-driver/src文件夹复制到XCode Project文件夹
在XCode中创建一个名为"ObjCMongoDB"的新组并选中它
将步骤4中的src文件夹添加到项目中,但不添加到目标中。
将Project中src的名称改为mongo-c-driver
将mongo-c-driver中的这些文件添加到目标:
- bson.c
- encoding.c
- numbers.c
- mongo.c
- md5.c
- env.c
在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]
文件添加到你的项目中,它应该正确构建。