如何在IOS中为Google App Engine端点启用可选参数

时间:2015-12-03 17:37:13

标签: ios google-app-engine google-cloud-endpoints endpoints-proto-datastore

我创建了一个后端API项目,并且在没有传递任何参数的情况下成功调用了我的应用程序中端点公开的API。

GTLQueryNewerAPI *query = [GTLQueryNewerAPI queryForMymodelList];

此方法设计有可选参数。如生成Google API发现服务中所示:

// Method: newerAPI.mymodel.list
//  Optional:
//   pupil: NSString
//  Authorization scope(s):
//   kGTLAuthScopeNewerAPIUserinfoEmail
// Fetches a GTLNewerAPIMyModelCollection.
+ (instancetype)queryForMymodelList;

我想在调用API时传递一个pupil参数,但我很难这样做。

NSString *pupil = @"Test Name";
GTLServiceNewerAPI *service = [self helloworldService];
GTLQueryNewerAPI *query = [GTLQueryNewerAPI queryForMymodelList:(NSString*)pupil];
  

没有已知的选择器类的方法`queryForMymodelList:'

1 个答案:

答案 0 :(得分:0)

因为pupil是一个可选参数,它不会为它生成构造函数 - 将它放在构造函数中会使创建GTLQueryNewerAPI的实例成为必需参数。

您需要做的就是:

NSString *pupil = @"Test Name";
GTLServiceNewerAPI *service = [self helloworldService];
GTLQueryNewerAPI *query = [GTLQueryNewerAPI queryForMymodelList];
query.pupil = pupil;

您应该看到pupil的头文件中声明的GTLQueryNewerAPI属性(通常类似于以下内容:

@interface GTLQueryNewerAPI : GTLQuery
//
// Parameters valid on all methods.
//

// Selector specifying which fields to include in a partial response.
@property (nonatomic, copy) NSString *fields;

//
// Method-specific parameters; see the comments below for more information.
//
@property (nonatomic, copy) NSString *pupil;

...
@end

如果声明了pupil属性,则应在需要时设置它。