Подтвердить что ты не робот

Почему Xcode 6.3 beta debugger показывает, что Swift NSData имеет количество байтов 190, но никаких свойств?

В Xcode 6.3 beta, выполняющем Swift 1.2, я, похоже, успешно извлек объект JSON из API, но отладчик утверждает, что объект не имеет свойств. API работает на localhost и вызывается вот так:

  NSURLConnection.sendAsynchronousRequest( request, queue: queue,
    completionHandler: completionHandler )

completionHandler является замыканием с точкой останова в нем:

let completionHandler =
{
  ( response: NSURLResponse!, data: NSData!, error: NSError! ) -> Void in
  // BREAKPOINT HERE
}

Отладчик показывает, что в Xcode 6.3 beta с Swift 1.2 данные: NSData! - объект ObjectiveC.NSO из 190 байт, но без свойств, который кажется абсолютно противоречивым. Я просто хочу, чтобы данные JSON, которые, я надеюсь, спрятаны где-то в этих байтах. Я не знаю, виноват ли отладчик или код, который нуждается в обновлении для Swift 1.2, или мое понимание вещей или что-то еще. Я просто хочу JSON.

пост- script

Данные JSON были там все время, как подсчитано байт, и получение было очень простым (с использованием SwiftyJSON):

let json = JSON( data: data )

Вполне вероятно, что все, что случилось с свойствами в Xcode 6.3 beta debugger, остается загадкой. Я не добавляю это как ответ на свой собственный вопрос, потому что, хотя он работает, это необязательно будет answer. Я слишком новичок в Swift, чтобы узнать, какой может быть реальный ответ, или даже если он есть.

4b9b3361

Ответ 1

NSData - это инкапсуляция необработанных байтов данных, прежде чем она будет переведена в строку или проанализирована как JSON.

Если вы хотите увидеть, что содержат эти данные, вы можете использовать NSJSONSerialization (let jsonDictionary = NSJSONSerialization.JSONObjectWithData(data, options: nil, error: nil))

а затем прочитайте словарь, как и любой другой: let value = jsonDictionary["key"]

Надеюсь, что это полезно.