Swift:関数内で変数の値を更新して、他の関数で使いたい
Swiftにて以下のようなコードを書いたところ、関数bのprintでは1が出力されるものの、関数aのprintでは0のまま出力されます。
どうすれば関数a内の変数xに関数bでの代入を反映させられるのでしょうか?
class ViewController: UIViewController {
var x = 0
func a(){
b()
print(x)
}
func b() {
x = 1
print(x)
}
追記
説明を端折ってしまい、すみません。
メソッドa,bは、正確には以下のコードです。
@IBAction func a(sender: UIBarButtonItem) {
b()
print(self.id) // 2
// 画像をNSDataに変換
let fileName = "image\(self.id).png"
let pngData = NSData(data: UIImagePNGRepresentation(self.displayImage.image!)!)
let file = NCMBFile.fileWithName(fileName, data: pngData) as! NCMBFile
// ファイルストアへ画像のアップロード
file.saveInBackgroundWithBlock({ (error: NSError!) -> Void in
if error != nil {
// 保存失敗時の処理
} else {
// 保存成功時の処理
}
})
}
func b() {
// user1クラスを検索するNCMBQueryを作成
let query = NCMBQuery(className:"xxx")
// データストアでの検索を行う
query.findObjectsInBackgroundWithBlock{(objects, error ) in
if error != nil {
// 検索に失敗した場合の処理
}else{
// 検索に成功した場合の処理
self.id = objects.count
print(self.id) //1
}
}
}
print1ではobjects.countの値が出力されましたが、2でははじめに定義した0がそのまま出力されました。また、アップロードされた画像のナンバリングも、objects.countの値ではなく、0のままでした。