我正在开发一个iPhone应用程序,它使用API从http://www.recipepuppy.com/about/api/查找食谱。
返回结果中必须放入三个参数。有
i
、q
和 p
,其中 i
是成分,q
在普通搜索查询中,p
是页码。我可以专门添加这些参数,然后将结果加载到 Xcode 中的表格视图中。
我还想实现一个搜索,允许用户根据自己的喜好搜索食谱并返回结果。有人可以指出我如何做到这一点的正确方向吗?我知道我必须将用户输入的内容放入字符串中,但是如何将该字符串实现到 URL 的参数中?
回答你的问题:
我知道我必须将用户输入的内容放入字符串中,但是如何将该字符串实现到 URL 的参数中?
可以使用NSString的stringWithFormat方法。例如:
NSString *ingredients = @"ingredients";
NSString *query = @"soups";
NSString *page = @"1";
NSString *url = [NSString stringWithFormat:@"http://www.recipepuppy.com/api/?i=%@&q=%@&p=%@",ingredients,query,page];
在使用此 URL 之前,建议您对其进行 URL 编码。
NSString *encodedURL = [url stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
现在您已经有了 URL,只需启动与网络的连接(NSURLConnection、AFNetworking,选择权在您),解析返回的数据,并将其加载到数组中以显示在表视图中。
要构建一个涉及通过网络进行 JSON 通信的可靠应用程序,您可以使用 JSONModel 库。它为您提供数据模型,并负责向您的 API 服务发送和接收 JSON。
您可以查看GitHub页面: https://github.com/icanzilb/JSONModel/
或者也可以参考此示例,了解如何将 YouTube JSON API 与 JSONModel 结合使用: http://www.touch-code-magazine.com/how-to-make-a-youtube-app-using-mgbox-and-jsonmodel/
GitHub页面上有更多代码示例。祝你好运:)
(披露:我是 JSONModel 的作者)
我会使用 AFNetworking 来处理您的所有网络请求: https://github.com/AFNetworking/AFNetworking
要发出请求,只需构造一个 NSString 并将其发送出去
[NSString stringWithFormat:@"http://www.recipepuppy.com/api/?i=%@&q=%@&p=%d", self.ingredients, self.query, self.page]