簡體   English   中英

無法在Swift中調用特定的Objective-C類方法

[英]Unable to call specific Objective-C class method in Swift

我正在使用AFNetworking 2.3.1

let request = NSURLRequest(URL: NSURL(string: "http://xxx.xxx.xxx/xxx")!)
var requestOperation = AFHTTPRequestOperation(request: request)
requestOperation.responseSerializer = AFImageResponseSerializer()

我使用Swift 1.1(Xcode 6.1 beta 2 build 6A1030)在第三行出錯:

'init()' is unavailable: superseded by import of -[NSObject init]

在Objective-C上,這一行應如下所示:

requestOperation.responseSerializer = [AFImageResponseSerializer serializer];

我認為這個問題與Objective-C的Swift自動橋接有關。 任何解決這個問題的想法?

在此輸入圖像描述

更新:

這種方式不起作用:

AFImageResponseSerializer.serializer()

錯誤描述非常好:

'serializer()' is unavailable: use object construction 'AFHTTPResponseSerializer()'

更新2:

現在我找到了暫時的解決方案。 我將此代碼添加到橋接標頭:

@interface AFImageResponseSerializer (CustomInit)
+ (instancetype)sharedSerializer;
@end

並將代碼添加到“bridging-header”實現文件中:

@implementation AFImageResponseSerializer (CustomInit)
+ (instancetype)sharedSerializer {
    return [AFImageResponseSerializer serializer];
}
@end

並像這樣使用它:

AFImageResponseSerializer.sharedSerializer()

它是由於在XCode 6.1中轉換為基類變得更加嚴格。 所以,你需要upcasting,如下所示。

requestOperation.responseSerializer = AFImageResponseSerializer() as AFHTTPResponseSerializer

如果它是一個類方法,你可能想要AFImageResponseSerializer.serializer()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM