Swift 2 print(), как скрыть?

до Swift 2 вы могли скрыть все свои println() для выпуска, имея небольшой помощник, подобный этому

func println(object: Any) {

#if DEBUG
    Swift.println(object)
#endif

Если вы измените это на

func print(object: Any) {

#if DEBUG
    Swift.print(object)
#endif

он работает, как и ожидалось, однако print() имеет новую функцию appendLine. Итак, в вашем коде вы можете написать

println("Test", appendNewLine: false)

Однако это означает, что вышеупомянутый помощник больше не будет работать. Любые предложения о том, как это исправить. Большое тебе спасибо.


person crashoverride777    schedule 07.09.2015    source источник


Ответы (3)


Для быстрой версии 2.2 я использую следующее:

// Disable print for production.
func print(items: Any..., separator: String = " ", terminator: String = "\n") {
    #if DEBUG
    Swift.print(items[0], separator:separator, terminator: terminator)
    #endif
}
person huwiler    schedule 31.08.2016
comment
Привет, спасибо, я тоже этим сейчас занимаюсь. Я отредактировал ваш ответ, чтобы включить строку в функцию, так как она также изменилась. Я отметил это как правильное, так как это лучшее решение на данный момент и должно помочь будущим читателям. - person crashoverride777; 31.08.2016

Вместо этого используйте Swift.debugPrint(), чтобы отключить все отпечатки в режиме выпуска.

person Qbyte    schedule 07.09.2015
comment
Спасибо. На самом деле оказывается, что appendNewLine нужен только тогда, когда вы не хотите его использовать. Так что просто сказать print(Test) точно так же, как println(Test). Вам просто нужно сказать appendNewLine:false, если вы хотите вывести в 1 строку в консоли. stackoverflow.com /вопросы/24072775/ - person crashoverride777; 07.09.2015
comment
Это не правильно, насколько я могу судить. Можете ли вы указать документацию об этом, потому что это не упоминается в описании функции, и все, что я могу найти при поиске, это ответы StackOverflow. Возможно, эта проблема вызвала некоторую путаницу: stackoverflow.com/questions/31218200/ - person Jason Newell; 20.02.2016
comment
Согласно этой статье компилятор Swift не удаляет debugPrint во время компиляции: medium.com/ios-os-x-development/ - person wuf810; 08.07.2016

Qbyte находится на правильном пути, но debugPrint будет печатать независимо от того, определено ли "DEBUG" или нет.

Почему бы не заменить хелпера на "appendNewLine"? То есть:

func print(object: Any) {

#if DEBUG
    Swift.print(object, appendNewLine: true)
#endif

или, возможно, изменить имя, чтобы быть немного более понятным:

func printDuringDebug(object: Any) {

    #if DEBUG
        print(object, appendNewLine: true)
    #endif
person Michael Dautermann    schedule 07.09.2015
comment
И тебе спасибо. Это на самом деле то, что я тоже пробовал, но у меня были некоторые проблемы с этим. Попробую еще раз через 2 дня, когда GM выйдет. См. мой комментарий выше, хотя, по-видимому, вам даже не нужно писать appendNewLine: true. Я неправильно понял это. - person crashoverride777; 07.09.2015