将 objective-c 块语法转换为 swift
Converting objective-c block syntax to swift
我一直在练习积木,希望得到一些帮助,将这个积木从 Objective C 转换为 Swift。
下面的 Objective C 代码工作正常...每秒记录一个随机数
- (void)viewDidLoad {
[super viewDidLoad];
NSTimer *timer = [NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(returnNumberMethod) userInfo:nil repeats:YES];
}
- (void)returnNumberMethod {
[self returnRandomInt:^(NSInteger randNum) {
NSLog(@"%ld", (long)randNum);
}];
}
- (void)returnRandomInt:(void (^)(NSInteger randNum)) completion {
NSInteger number = arc4random_uniform(100);
completion(number);
}
我的 swift 尝试,但没有成功,我知道语法有误,但有人能帮忙翻译上面的代码吗?谢谢!
override func viewDidLoad() {
super.viewDidLoad()
let timer = NSTimer(timeInterval: 1, target: self, selector: "getRandomNumber", userInfo: nil, repeats: true)
}
//block practice
func getRandomNumber() {
self.randomNumber { (number) -> NSInteger in
let numberString = NSString(format: "%ld", number)
print(numberString)
}
}
func randomNumber(completion: (number: NSInteger) -> NSInteger) {
let numero = arc4random_uniform(100)
}
你很接近:使完成回调成为一个接受 UInt32
的方法(因为这是由 arc4random_uniform
编辑的 return 类型)和 return void。另外更改调用函数的语法。以下作品:
func getRandomNumber() {
randomNumber { number in
let numberString = NSString(format: "%ld", number)
print(numberString)
}
}
func randomNumber(completion: (UInt32 -> Void)) {
let numero = arc4random_uniform(100)
completion(numero)
}
您可以使用 swift 中的字符串魔术,方法是使用 print("\(number)")
而不是字符串格式。
我一直在练习积木,希望得到一些帮助,将这个积木从 Objective C 转换为 Swift。
下面的 Objective C 代码工作正常...每秒记录一个随机数
- (void)viewDidLoad {
[super viewDidLoad];
NSTimer *timer = [NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(returnNumberMethod) userInfo:nil repeats:YES];
}
- (void)returnNumberMethod {
[self returnRandomInt:^(NSInteger randNum) {
NSLog(@"%ld", (long)randNum);
}];
}
- (void)returnRandomInt:(void (^)(NSInteger randNum)) completion {
NSInteger number = arc4random_uniform(100);
completion(number);
}
我的 swift 尝试,但没有成功,我知道语法有误,但有人能帮忙翻译上面的代码吗?谢谢!
override func viewDidLoad() {
super.viewDidLoad()
let timer = NSTimer(timeInterval: 1, target: self, selector: "getRandomNumber", userInfo: nil, repeats: true)
}
//block practice
func getRandomNumber() {
self.randomNumber { (number) -> NSInteger in
let numberString = NSString(format: "%ld", number)
print(numberString)
}
}
func randomNumber(completion: (number: NSInteger) -> NSInteger) {
let numero = arc4random_uniform(100)
}
你很接近:使完成回调成为一个接受 UInt32
的方法(因为这是由 arc4random_uniform
编辑的 return 类型)和 return void。另外更改调用函数的语法。以下作品:
func getRandomNumber() {
randomNumber { number in
let numberString = NSString(format: "%ld", number)
print(numberString)
}
}
func randomNumber(completion: (UInt32 -> Void)) {
let numero = arc4random_uniform(100)
completion(numero)
}
您可以使用 swift 中的字符串魔术,方法是使用 print("\(number)")
而不是字符串格式。