2016-08-10 2 views
3

Я сейчас в процессе создания моего первого проекта Swift для iOS на Xcode. Моя текущая проблема заключается в том, что кажется, что все команды print(), которые у меня есть в моем коде, фактически не выводят текст в окно консоли. Я рассматривал эту проблему в разных местах, но не могу найти кого-либо еще с той же проблемой, поэтому я предполагаю, что у меня какая-то синтаксическая ошибка, или мое понимание swift/xcode просто неверно. Вот блок кода у меня есть:Swift: print() команда не печатать на консоль в Xcode 7.3.1

override func viewDidLoad() { 
    super.viewDidLoad() 
    // Configure the view. 
    let skView = view as! SKView 
    skView.multipleTouchEnabled = false 

    let defaults = NSUserDefaults.standardUserDefaults() 
    defaults.setValue("white",forKey: "petColor") 
    let bugcheck = defaults.stringForKey("petColor") 
    print(bugcheck) 
    print("hello yes this works") 

    // Create and configure the scene. 
    scene = GameScene(size: skView.bounds.size) 
    scene.scaleMode = .AspectFill 

    // Present the scene. 
    skView.presentScene(scene) 
    } 

Это в GameViewController.swift файл, который производится по умолчанию при создании нового проекта. Линии:

let defaults = NSUserDefaults.standardUserDefaults() 
    defaults.setValue("white",forKey: "petColor") 
    let bugcheck = defaults.stringForKey("petColor") 
    print(bugcheck) 
    print("hello yes this works") 

Является частью, с которой я пытаюсь работать. Я хочу знать, что значения по умолчанию корректно сохранены/загружены. Когда я запускаю приложение в симуляторе, представление загружается, и сцена представлена ​​(у меня на экране появляются некоторые изображения), поэтому я знаю, что код по крайней мере запускается. Однако на консоли ничего не отображается. Что дает? Извините, если этот вопрос был задан раньше, но, как я уже сказал, я не мог найти ресурс. Спасибо за ваше время.

+0

Уверены ли вы, что у вас есть открытое представление, которое показывает распечатанные заявления? – chickenparm

+0

Добавьте точку останова, чтобы убедиться, что вы фактически достигли строки кода, который печатает. – JAL

+0

Breakpoints действительно помогли мне разобраться с проблемой, спасибо! – user3527420

ответ

4

Вам нужно установить/добавить точку останова, потому что иногда методы в других файлах, например, с рекурсивными блоками или сегментами, могут быть вытеснены вызовом линии печати. Если вы видите свой оператор печати после того, как вы установили точку прерывания, вы знаете, что что-то, вызывающее вызов, вытесняет вызов оператора печати.

Adding, Disabling, and Deleting Breakpoints

Кроме того, это может показаться очевидным, так что не стреляйте в меня, но многие люди ошибочно отключить вид консоли. shift + command + C показывает консоль вид.

Кроме того, вы можете использовать nslog для печати в журналах устройств, чтобы узнать, не имеет значения. nslog добавляет отметки времени и т. Д. NSLog("Can anyone hear me?") Затем перейдите в Xcode -> Window -> Devices и проверьте журналы устройств. Вы также можете проверить консольное приложение OS X для тех же журналов.

+0

Да, когда я начал возиться с контрольными точками, мне удалось заставить его работать. Спасибо! Я немного смущен относительно того, как именно контрольные точки фиксировали проблему, но я благодарен, тем не менее. Еще раз спасибо! – user3527420

+0

Точки останова просто позволяют существенно остановить программу в любой точке, в которую вы установили точку останова. Они ничего не фиксируют. Если вы видели заявление о печати, это означает, что вы остановили программу в точке останова, где оператор печати имел возможность распечатывать, прежде чем другая функция или метод вытеснили оператор печати. Итак, теперь вам нужно выяснить, какой код вытесняет вашу печатную линию. Если вы действительно заинтересованы в том, чтобы узнать. – tymac

+0

shift + command + C работал для меня, thx ... :-) – kevinius

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