2016-07-10 66 views
-3

如何在Swift中修改閉包中的值或至少從閉包中獲取數據?我有一個全局變量在類之外聲明,我試圖從閉包或完成塊中修改它;但是,它沒有被修改,我不能從封閉內部獲取數據。如何在swift中修改閉包中的全局變量?

var someGlobalVariable = 0 

    class someClass{ 


dispatch_async(dispatch_get_main_queue(), {() -> Void in 

         someGlobalVarible += 1 






        }) 
    } 

    print(someGlobalVariable) // returns 0 and not 1 
} 
+0

如果您發佈了一個不適合您的示例,因爲您可以修改外部變量而不做任何特殊處理,所以最好。你可以保留週期,但這是另一個問題。 –

+1

該示例不編譯。 – zneak

+1

這不是有效的swift代碼。我不推薦嘗試你不明白的代碼(這可怕的是破壞了),在做任何其他事情之前,先閱讀Apple的Swift書。 –

回答

0

如果我沒記錯的話,可以通過添加self來訪問全局變量。到封閉內部的變量

self.someGlobalVariable 
+0

這裏的問題是,它甚至不是有效的Swift ... –

0

您必須在變量更新後打印該變量。

dispatch_async(dispatch_get_main_queue(), {() -> Void in 

    someGlobalVarible += 1 
    print(someGlobalVariable) // will print 1 
}) 
} 
相關問題