2015-01-14 70 views
0

我將我的Objective-C應用程序重寫爲Swift,並將此Objective-C代碼轉換爲Swift時遇到問題。Swift中的Objective-C塊

Objective-C代碼:

for (void(^block)(void) in enumerator.allObjects) { 
    if (block) 
     block(); 
} 

Swift代碼:

for (var block:() -> Void in enumerator.allObjects) { 
     if (block) { 
      block(); 
     } 
    } 

Xcode的顯示3個錯誤:在 '關於'

預期表達

預期條件聲明

預期';'在 'For' 語句

非常感謝;-)

+0

我以爲斯威夫特不需要尾​​隨分號... –

+0

@TravisGriggs是的,我也不是。也許這是編譯器的錯誤。 –

回答

0

取出括號

1> for i in 1...3 { 
    2.  println(i) 
    3. } 
1 
2 
3 
    4> for (i in 1...3) { 
    5.  println(i) 
    6. } 
repl.swift:4:8: error: expected ';' in 'for' statement 
for (i in 1...3) { 
    ^
repl.swift:4:8: error: expected condition in 'for' statement 
for (i in 1...3) { 
    ^
repl.swift:4:8: error: expected ';' in 'for' statement 
for (i in 1...3) { 
    ^
repl.swift:4:8: error: expected expression 
for (i in 1...3) { 
    ^
repl.swift:4:8: error: expected ')' in 'for' statement 
for (i in 1...3) { 
    ^
repl.swift:4:5: note: to match this opening '(' 
for (i in 1...3) { 
    ^
repl.swift:4:8: error: expected '{' in 'for' statement 
for (i in 1...3) { 
    ^
repl.swift:4:18: error: statement cannot begin with a closure expression 
for (i in 1...3) { 
       ^
repl.swift:4:18: note: explicitly discard the result of the closure by assigning to '_' 
for (i in 1...3) { 
       ^
       _ = 
repl.swift:4:18: error: braced block of statements is an unused closure 
for (i in 1...3) { 
       ^

    4> 
+0

仍然無法工作,QAQ –

0

這工作。

let block1 : (Int)->() = { i in 
    println(i) 
} 
let block2 : (Int)->() = { i in 
    println(i*2) 
} 

let array = [block1, block2] 

for block in array { 
    block(1) 
}