gpt4 book ai didi

ios - Swift 2 中显式的老式错误处理

转载 作者:可可西里 更新时间:2023-11-01 04:04:00 25 4
gpt4 key购买 nike

Apple 在 Swift 2 中引入了奇特的新错误处理

https://developer.apple.com/library/prerelease/ios/documentation/Swift/Conceptual/Swift_Programming_Language/ErrorHandling.html#//apple_ref/doc/uid/TP40014216-CH7-ID10

我正在处理使用 AFNetoworking v2.x 的项目,其中 AFHTTPRequestSerializer 有 2 个选择器:

- (NSMutableURLRequest *)requestWithMethod:(NSString *)method
URLString:(NSString *)URLString
parameters:(id)parameters DEPRECATED_ATTRIBUTE;

- (NSMutableURLRequest *)requestWithMethod:(NSString *)method
URLString:(NSString *)URLString
parameters:(id)parameters
error:(NSError * __autoreleasing *)error;

First 已被弃用,但 second 会被 Swift 2 编译器自动转换为 first 签名。现在不允许使用老式方法:

var error: NSError?
let request = self!.operationManager.requestSerializer.requestWithMethod(method, URLString: url?.absoluteString, parameters: params, error: error)

给我一​​个编译时错误:

Cannot convert value of type 'NSError?' to expected argument type '()'

但是全新的符号将带有错误处理的选择器减少为没有它的弃用变体。

do {
let request = try
self!.operationManager.requestSerializer.requestWithMethod(method, URLString: url?.absoluteString, parameters: params)
} catch let error as NSError {
// ...
}

Swift 2 中解决这个问题的最佳实践是什么?在这种情况下有没有办法指定特定的选择器?

UPD:关于 Swift 2 功能的更精确链接成为我出现问题的原因。 https://developer.apple.com/library/prerelease/ios/documentation/Swift/Conceptual/BuildingCocoaApps/AdoptingCocoaDesignPatterns.html#//apple_ref/doc/uid/TP40014216-CH7-ID10

最佳答案

这似乎在 Xcode 7.1 中正常工作(我记得在 7.0 中有这个问题)只需更改您的方法以使用错误指针即 &error

var error: NSError?
let request = self!.operationManager.requestSerializer.requestWithMethod(method, URLString: url?.absoluteString, parameters: params, error: &error)

关于ios - Swift 2 中显式的老式错误处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33377508/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com