如何在swift中修改闭包内的全局变量?

如何在swift中修改闭包内的全局变量?,swift,global-variables,closures,completionhandler,Swift,Global Variables,Closures,Completionhandler,如何在Swift中修改闭包内的值或至少从闭包中获取数据?我在类外部声明了一个全局变量,我试图在闭包或完成块中修改它;但是,它没有被修改,我无法从闭包中获取数据 var someGlobalVariable = 0 class someClass{ dispatch_async(dispatch_get_main_queue(), { () -> Void in someGlobalVarible += 1

如何在Swift中修改闭包内的值或至少从闭包中获取数据?我在类外部声明了一个全局变量,我试图在闭包或完成块中修改它;但是,它没有被修改,我无法从闭包中获取数据

  var someGlobalVariable = 0 

  class someClass{


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

                        someGlobalVarible += 1 






                    })
  }

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

如果我没记错的话,您可以通过添加self来访问全局变量。到闭包内的变量

self.someGlobalVariable

您必须在变量更新后打印它

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

    someGlobalVarible += 1 
    print(someGlobalVariable) // will print 1
})
}

最好是发布一个不适合您的示例,因为您可以修改外部变量,而无需执行任何特殊操作。您可以保留循环,但这是另一个问题。该示例无法编译。这不是有效的swift代码。我不建议你尝试你不懂的代码(这是非常糟糕的),在做任何其他事情之前先阅读苹果的Swift书籍。