CocoaHTTPServer2.3 Неявное объявление функции ‘LOG_OBJC_MAYBE’ недопустимо в C99

#objective-c #logging #swift3

#objective-c #ведение журнала #swift3

Вопрос:

Я использую последнюю версию pod 'CocoaHTTPServer', '~> 2.3' и xcode версии 8.1 beta (8T29o) и swift 3.0

Когда я устанавливаю этот модуль, я получаю эту ошибку при HTTPLogError (и другом методе HTTPLoging.h).

 /Volumes/app/Project_ios/Pods/CocoaHTTPServer/Extensions/WebDAV/DAVResponse.m:102:9: Implicit declaration of function 'LOG_OBJC_MAYBE' is invalid in C99
 

Комментарии:

1. У меня тоже есть такая же проблема, и она не решена. Что я сделал, так это удалил все функции cocoa lumber jack в модуле cocoahttpserver (что не очень хорошо). Проблема, которую я подозреваю, заключается в том, что cocoalumberjack поддерживает только xcode 8 и swift 3. Обратная совместимость предназначена для xcode 7.3 и swift 2.3 .

Ответ №1:

Я выполнил следующие шаги для решения проблемы:

Шаг 1: измените #import "DDLog.h" на #import <CocoaLumberjack/CocoaLumberjack.h> в файле HTTPLogging.h

Шаг 2: замените все LOG_OBJC_MAYBE на HTTP_LOG_OBJC_MAYBE и все LOG_C_MAYBE на HTTP_LOG_C_MAYBE в файле HTTPLogging.h

Шаг 3. добавьте следующий макрос в файл HTTPLogging.h

 #define HTTP_LOG_OBJC_MAYBE(async, lvl, flg, ctx, frmt, ...) 
do{ if(HTTP_LOG_ASYNC_ENABLED) LOG_MAYBE(async, lvl, flg, ctx, nil, sel_getName(_cmd), frmt, ##__VA_ARGS__); } while(0)

#define HTTP_LOG_C_MAYBE(async, lvl, flg, ctx, frmt, ...) 
do{ if(HTTP_LOG_ASYNC_ENABLED) LOG_MAYBE(async, lvl, flg, ctx, nil, __FUNCTION__, frmt, ##__VA_ARGS__); } while(0)
 

Надеюсь, мой опыт может помочь.