如何为从ios项目调用的Endpoints后端API方法创建和提供实体类型输入

时间:2015-04-10 18:59:11

标签: ios objective-c google-app-engine entity google-cloud-endpoints

使用Google Endpoints Technology时,方法返回类型以及API请求的请求正文必须是实体类型。我有2个API方法:其中一个返回一个实体,并期望一个实体作为输入。另一个不期望任何输入但返回实体。期望没有输入的那个工作正常但我没有使用期望输入的那个。我不知道如何在目标c中为其相关函数提供正确的输入。 就Google的数据存储而言,以下是一个实体的示例:

{"balance":1000.21,"num":100,"nickname":null,"is_vip":true,"name":"foo"}

根据以上知识,我在ios项目中有以下代码:

GTLExGirlFriendEntity *userInput;
userInput=(GTLExGirlFriendEntity *)@{@"name":@"Run Away Bride"};
GTLQueryExGirlFriend *query = [GTLQueryExGirlFriend queryForExGirlFriendsGetExGirlFriendsWithObject:userInput];
[service executeQuery:query completionHandler:^(GTLServiceTicket *ticket, GTLExGirlFriendObjectCollection *object, NSError *error) {

                //Some code in here, etc etc...

 }];

当我运行我的项目时,我收到以下错误:

2015-04-10 14:26:49.546 exgirlfriend[65703:560200] -[__NSDictionaryI JSON]: unrecognized selector sent to instance 0x7fb8224bf7c0
2015-04-10 14:26:49.622 exgirlfriend[65703:560200] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSDictionaryI JSON]: unrecognized selector sent to instance 0x7fb8224bf7c0'
*** First throw call stack:
( A bunch of data in here... )

这里的问题是我的输入没有被解释为Entity或GTLExGirlFriendEntity。有谁知道我能做些什么来解决     这个问题。

注意:如果我只调用不需要输入的API方法,项目将按预期工作。

1 个答案:

答案 0 :(得分:0)

我错误地初始化了GTLExGirlFriendEntity; GTLExGirlFriendEntity是一个包含必须设置的属性的对象;其中一些属性本身就是包含必须设置的属性的对象;等等...

一点背景:在编译iOS Client库生成器然后用它来生成我的iOS Client库之后,为我创建了这些对象及其存在的文件。我没有花时间看所有的物体并理解它们是如何工作的,因为它们很多。如果我这样做,我就不会遇到我遇到的问题。无论如何,我已经做了必要的改变,现在一切都按预期工作了。