我在一个项目中将结合使用这些服务:
尝试遵循AFNetworking文档中提到的最佳做法:
针对iOS 7或Mac OS X 10.9或更高版本的开发人员
鼓励广泛使用Web服务进行子类化
AFHTTPSessionManager,提供一个返回共享的类方法
身份验证和其他配置可以在其上的单例对象
在整个应用程序中共享。
因此,我创建了一个单例网络管理器,例如:
MyAppAPI.h
#import <Foundation/Foundation.h>
#import "AFHTTPSessionManager.h"
#import "AFNetworking.h"
@interface MyAppAPI : AFHTTPSessionManager
+(MyAppAPI *)sharedInstance;
@end
MyAppAPI.m
#import "MyAppAPI.h"
@implementation MyAppAPI
+(MyAppAPI*)sharedInstance
{
static MyAppAPI* sharedInstance = nil;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
sharedInstance = [[MyAppAPI alloc] initWithBaseURL:[NSURL URLWithString:kROOT_URL]];
});
return sharedInstance;
}
@end
其中
kROOT_URL
是"https://maps.googleapis.com/maps/api/place/nearbysearch"
用法:
NSDictionary *params = @{@"some_param":@"some_value" };
[[MyAppAPI sharedInstance] GET: @"/json"
parameters:params
success:^(NSURLSessionDataTask *task, id responseObject){
} failure:^(NSURLSessionDataTask *task, NSError *error)
{
}];
现在,它仅适用于我们服务的Google Places API。
baseURL
,如果不可能的话,如何解决这种情况? 我需要最佳做法建议,以结合使用Parse,AFNetworking和Google Places API网络服务。
已经发现:changing AFNetworking baseURL但没有帮助
最佳答案
做您正在做的事非常好。重要思想是该文档建议的单例是每个服务的单例。对单例名称的选择进行一些调整可能会有助于弄清楚,所以与其...
// MyAppAPI.h
@interface MyAppAPI : AFHTTPSessionManager
认为您到目前为止所写的应该被称为...
// GooglePlacesAPI.h
@interface GooglePlacesAPI : AFHTTPSessionManager
...并包括类似...的方法
- (void)nearbySearch:(NSString *)value
success:(void (^)(NSURLSessionDataTask *, id))success
failure:(void (^)(NSURLSessionDataTask *, NSError *))failure {
NSDictionary *params = @{@"some_param":value };
[self GET: @"/json" parameters:params success:success failure:failure];
}
此类客户随后会说...
[GooglePlacesAPI nearbySearch:@"some value" success:^(NSURLSessionDataTask *task, id responseObject) {
// handle success
} failure:^(NSURLSessionDataTask *task, NSError *error) {
// handle failure
}];
Parse为您提供了使用REST API的选项,并且您可以遵循相同的模式为Parse创建单例。
// ParseAPI.h
@interface ParseAPI : AFHTTPSessionManager
值得一提的是,Parse还提供了完整的iOS SDK,以类似于AFNetworking的方式包装网络代码,因此,如果您选择SDK而不是REST API,则不需要这种方法。
关于ios - AFNetworking + Google Places API Web服务+具有多个baseURL的Parse SDK,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32030388/