Swift 2.0 - 将元组结构传递给函数
Swift 2.0 - pass a tuple struct to function
我想将一个元组结构传递给一个函数,但我得到了未知元组字段的错误:
import UIKit
struct MyClassConstants {
static let DOMAIN = "MyClassDomain"
struct Error {
static let ERROR1 = (code: -1, description: "Error1 description")
static let ERROR2 = (code: -2, description: "Error2 description")
}
}
extension NSError {
public class func MyClassError(error: MyClassConstants.Error) -> NSError {
return NSError(domain: MyClassConstants.DOMAIN, code: error.code, userInfo: ["description": error.description]) // error here!!
}
}
class MyClass: NSObject {
// some properties
func doSomething() {
let error = NSError.MyClassError(MyClassConstants.Error.Error1)
// ...
}
}
错误是:
Value of type "MyClassConstants.Error" has no member 'code'.
我认为 MyClassError
中错误的原因是我没有将 error
参数转换为元组?我怎样才能做到这一点?还是其他原因?
谢谢。
实际上我花了一段时间才找出错误所在。
太容易错过了
错误发生是因为参数-error
是MyClassConstants.Error
的一个实例。使用此实例,您只能访问该类型的 instance 方法或属性。但是,您的 MyClassConstants.Error
没有实例属性!它只包含静态属性!
您需要知道 ERROR1
和 ERROR2
不是 MyClassConstants.Error
类型。它们的类型是 (code: Int, description: String)
!
所以是的...
您遇到的第二个错误位于:
let error = NSError.MyClassError(MyClassConstants.Error.Error1)
因为ERROR1
不是MyClassConstants.Error
类型,不能传入方法
如何解决这个问题:
好吧,这是不言自明的代码:
// Change MyClassError method to this:
public class func MyClassError(error: (code: Int, description: String)) -> NSError {
return NSError(domain: MyClassConstants.DOMAIN, code: error.code, userInfo: ["description": error.description]) // error here!!
}
我想将一个元组结构传递给一个函数,但我得到了未知元组字段的错误:
import UIKit
struct MyClassConstants {
static let DOMAIN = "MyClassDomain"
struct Error {
static let ERROR1 = (code: -1, description: "Error1 description")
static let ERROR2 = (code: -2, description: "Error2 description")
}
}
extension NSError {
public class func MyClassError(error: MyClassConstants.Error) -> NSError {
return NSError(domain: MyClassConstants.DOMAIN, code: error.code, userInfo: ["description": error.description]) // error here!!
}
}
class MyClass: NSObject {
// some properties
func doSomething() {
let error = NSError.MyClassError(MyClassConstants.Error.Error1)
// ...
}
}
错误是:
Value of type "MyClassConstants.Error" has no member 'code'.
我认为 MyClassError
中错误的原因是我没有将 error
参数转换为元组?我怎样才能做到这一点?还是其他原因?
谢谢。
实际上我花了一段时间才找出错误所在。
太容易错过了
错误发生是因为参数-error
是MyClassConstants.Error
的一个实例。使用此实例,您只能访问该类型的 instance 方法或属性。但是,您的 MyClassConstants.Error
没有实例属性!它只包含静态属性!
您需要知道 ERROR1
和 ERROR2
不是 MyClassConstants.Error
类型。它们的类型是 (code: Int, description: String)
!
所以是的...
您遇到的第二个错误位于:
let error = NSError.MyClassError(MyClassConstants.Error.Error1)
因为ERROR1
不是MyClassConstants.Error
类型,不能传入方法
如何解决这个问题:
好吧,这是不言自明的代码:
// Change MyClassError method to this:
public class func MyClassError(error: (code: Int, description: String)) -> NSError {
return NSError(domain: MyClassConstants.DOMAIN, code: error.code, userInfo: ["description": error.description]) // error here!!
}