将 Obj-C 转换为 Swift
Converting Obj-C to Swift
我无法将此行转换为 Swift:
(void)authenticateLayerWithUserID:(NSString *)userID completion:(void (^)(BOOL success, NSError * error))completion { }
这是我在 Swift 中的台词:
func authenticateLayerWithUserID(userID: NSString) {(success: Bool, error: NSError?) -> Void in }
有人知道我做错了什么吗?
我会用 "completion handler" 翻译 Swift 中的这种函数:
func authenticateLayerWithUserID(userID: NSString, completion: (success: Bool, error: NSError?) -> ()) {
if userID == "Jack" {
completion(success: true, error: nil)
}
}
并这样称呼它:
authenticateLayerWithUserID("Jack", { (success, error) in
println(success) // true
})
编辑:
根据您的评论,这是 class 函数中的一个新示例,并带有 "if else":
class MyClass {
class func authenticateLayerWithUserID(userID: NSString, completion: (success: Bool, error: NSError?) -> ()) {
if userID == "Jack" {
completion(success: true, error: nil)
} else {
completion(success: false, error: nil)
}
}
}
MyClass.authenticateLayerWithUserID("Jack", completion: { (success, error) in
println(success) // true
})
MyClass.authenticateLayerWithUserID("John", completion: { (success, error) in
println(success) // false
})
如果你想调用那个方法,它在 Objective-C 中看起来像这样(我想你正在使用 this:
[self authenticateLayerWithUserID:userIDString completion:^(BOOL success, NSError *error) {
if (!success) {
NSLog(@"Failed Authenticating Layer Client with error:%@", error);
}
}];
在Swift
var c: MyClass = MyClass()
c.authenticateLayerWithUserID("user", completion: { (boolean, error) -> Void in
})
我无法将此行转换为 Swift:
(void)authenticateLayerWithUserID:(NSString *)userID completion:(void (^)(BOOL success, NSError * error))completion { }
这是我在 Swift 中的台词:
func authenticateLayerWithUserID(userID: NSString) {(success: Bool, error: NSError?) -> Void in }
有人知道我做错了什么吗?
我会用 "completion handler" 翻译 Swift 中的这种函数:
func authenticateLayerWithUserID(userID: NSString, completion: (success: Bool, error: NSError?) -> ()) {
if userID == "Jack" {
completion(success: true, error: nil)
}
}
并这样称呼它:
authenticateLayerWithUserID("Jack", { (success, error) in
println(success) // true
})
编辑:
根据您的评论,这是 class 函数中的一个新示例,并带有 "if else":
class MyClass {
class func authenticateLayerWithUserID(userID: NSString, completion: (success: Bool, error: NSError?) -> ()) {
if userID == "Jack" {
completion(success: true, error: nil)
} else {
completion(success: false, error: nil)
}
}
}
MyClass.authenticateLayerWithUserID("Jack", completion: { (success, error) in
println(success) // true
})
MyClass.authenticateLayerWithUserID("John", completion: { (success, error) in
println(success) // false
})
如果你想调用那个方法,它在 Objective-C 中看起来像这样(我想你正在使用 this:
[self authenticateLayerWithUserID:userIDString completion:^(BOOL success, NSError *error) {
if (!success) {
NSLog(@"Failed Authenticating Layer Client with error:%@", error);
}
}];
在Swift
var c: MyClass = MyClass()
c.authenticateLayerWithUserID("user", completion: { (boolean, error) -> Void in
})