2015-11-05 2 views
0

im довольно новый для Swift, im создающий небольшую игру Tic Tac Toe с поддержкой Multipeer для запуска, и я столкнулся с проблемой. Чтобы получить мои данные, которые я сделал «делать» блок, как:Как получить доступ к данным в блоке «do» swift2

 do{ 
      let data = try NSJSONSerialization.JSONObjectWithData(dataToTake, 
      options: NSJSONReadingOptions.AllowFragments) as! NSDictionary 
     }catch let error as NSError?{ 
     print(error) 
     } 

позже, я хотел бы получить доступ к данным вне от блока «делать», но я не могу, так как снаружи «делать» я не могу см. данные. Может кто-нибудь мне помочь? Не на меня на меня нападать, как я сказал им довольно новый, чтобы быстро! Благодаря!

+0

Если десериализация JSON не удалась, у вас нет данных. Сначала вам нужно решить, как вы хотите действовать в этом случае. –

+0

Вижу, вы можете привести пример, как это сделать? Спасибо за вашу помощь! – pbex

ответ

0

Вы не можете получить доступ к объекту данных за пределами области блокировки do catch. Чтобы получить доступ к нему за пределами этого блока, вы должны определить var перед выполнением блока:

var data: AnyObject? 
do { 
    data = try NSJSONSerialization.JSONObjectWithData(dataToTake, options: NSJSONReadingOptions.AllowFragments) as! NSDictionary 
} catch { 
    print(error) 
} 

print(data) 
+0

Спасибо также за вашу помощь! – pbex

0

общий пример с распространенной ошибкой. в закрытии мы можем определить «локальный» var с тем же именем с нежелательными результатами.

var j = 1 
var k = 0 
do { 
    var j = 0 
    // ..... 
    j = 2 
    k = j 
} 
print(j,k) // 1 2 
+0

Спасибо за помощь и за пример! Теперь я понял! – pbex

Смежные вопросы