gpt4 book ai didi

ios - Swift 2 中的错误域处理

转载 作者:行者123 更新时间:2023-11-28 06:45:31 24 4
gpt4 key购买 nike

我有以下来自 Swift 1.2 教程的代码,我无法将其转换为 Swift 2:

var val: AnyObject? = self.value
var error: NSError?
if !self.myManangedObject.validateValue(&val, forKey: self.key, error: &error) {
var message: String!
if error?.domain == "NSCocoaErrorDomain" {
var userInfo:NSDictionary? = error?.userInfo
var errorKey = userInfo?.valueForKey("NSValidationErrorKey") as String
var reason = error?.localizedFailureReason
message = NSLocalizedString("Validation error on \(errorKey)\rFailure Reason:\(reason)", comment: "Validation error on \(errorKey)\rFailure Reason: \(reason)")
} else {
message = error?.localizedDescription
}
// Create some alerts with the message
}

第一行中的 self.value 指的是 CoreData 属性的值。

我知道我需要将代码更改为 do { try } catch { } 结构。我猜第 3 行看起来像这样:

try self.myManagedObject.validateValue(&val, forKey: self.key) 

但是,这不起作用,因为 Xcode 首先建议删除指针,然后说

"Cannot convert value of type 'AnyObject?' to expected argument type 'AutoreleasingUnsafeMutablePointer (...)"

此外,我不确定如何处理 error?.domain 语句。通过搜索互联网,我发现的示例建议在枚举中处理错误类型,但我看不出这将如何适用于此处。

顺便说一句,是否可以使用当前版本的 Xcode 将这段代码从 Swift 1.2 更新到 2.0?

最佳答案

以下是您尝试执行的操作的最小工作示例:

var mgc : NSManagedObjectContext!
var any : AnyObject?

do {
let valid = try mgc.validateValue(&any, forKey: "myKey")
// branch based on the valid
} catch let error as NSError {
// here you go with your error handling
}

你能从这里拿走吗?

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

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