Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 在Swift 2中创建AFHTTPSessionManager子类的正确方法_Objective C_Swift_Afnetworking - Fatal编程技术网

Objective c 在Swift 2中创建AFHTTPSessionManager子类的正确方法

Objective c 在Swift 2中创建AFHTTPSessionManager子类的正确方法,objective-c,swift,afnetworking,Objective C,Swift,Afnetworking,我已经在objective-c中编写了AFHTTPSessionManager并将其子类化,因此它看起来是这样的: + (APIClient *)sharedAPIClient { static APIClient *_sharedAPIClient = nil; static dispatch_once_t onceToken; dispatch_once(&onceToken, ^{ _sharedAPIClient = [[self all

我已经在objective-c中编写了AFHTTPSessionManager并将其子类化,因此它看起来是这样的:

+ (APIClient *)sharedAPIClient
{
    static APIClient *_sharedAPIClient = nil;

    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
        _sharedAPIClient = [[self alloc] initWithBaseURL:[NSURL URLWithString:BaseURL]];
    });

    return _sharedAPIClient;
}

- (instancetype)initWithBaseURL:(NSURL *)url
{
    self = [super initWithBaseURL:url];

    if (self) {
        self.responseSerializer = [AFJSONResponseSerializer serializer];
        self.requestSerializer = [AFJSONRequestSerializer serializer];
    }

    return self;
}
我可以通过以下方式获得该类的实例:

var objAPIClient = APIClient()
objAPIClient = APIClient.sharedAPIClient()
我已经查看了有关堆栈溢出的以下资源:

通过实现以下代码:

let _sharedAPIManager = APIManager(baseURL: NSURL(string: API_URL)!)

class APIManager: AFHTTPSessionManager {

    /**
     * Singleton service 
     * (https://github.com/hpique/SwiftSingleton)
     */
    class var sharedInstance : APIManager {
        return _sharedAPIManager
    }

    init(baseURL url: NSURL!) {
        super.init(baseURL: url, sessionConfiguration: nil)

        self.responseSerializer = AFJSONResponseSerializer() as AFJSONResponseSerializer
        self.requestSerializer = AFJSONRequestSerializer() as AFJSONRequestSerializer

        self.requestSerializer.setValue(API_KEY, forHTTPHeaderField: "X-Api-Key")
        self.requestSerializer.setValue("3", forHTTPHeaderField: "X-Api-Version")
    }

    // this was inserted by XCode
    required init(coder aDecoder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }
}
它是否返回一个实际的单例,因为init应该是私有的?如何生成此代码的实例<代码>var x=APIManager.sharedInstance


将_sharedapimager移出类是错误的吗?这段代码是否完全像我的objective-c版本一样工作,而且在我的objective-c实现中它只运行一个

您可以将
\u sharedAPIManager
移动到
APIManager
内部,并将其重命名为
sharedInstance
。然后可以将初始值设定项声明为私有:

class APIManager: AFHTTPSessionManager {
    static let sharedInstance = APIManager(baseURL: NSURL(string: API_URL)!)

    private init(baseURL url: NSURL!) {

您可以通过
apimager.sharedInstance

访问singleton实例,那么如何获取实例<代码>变量x=apimager.sharedInstance?那么我可以删除这个吗
class var sharedInstance:APIManager{return\u sharedAPIManager}
是,删除原始的
sharedInstance
。访问将是相同的:
apimager.sharedInstance