Просто проверьте, равны ли клавиши number
в обоих случаях, затем повторите obj2.body
и нажмите каждый элемент в obj.body
let obj = {
number: "123",
body: [{
id: 'client',
text: 'hi'
}]
}
let obj2 = {
number: "123",
body: [{
id: 'client',
text: 'Hello there'
}]
}
if (obj2.number === obj.number) {
obj2.body.forEach(item => {
obj.body.push(item)
})
}
console.log(obj)
Существует намного более удобный способ проследить с сообщениями журнала в XCode, и это использует Действия Точки останова.
На строке кода, где Вы испытали бы желание добавить printf или NSLog, установите точку останова, затем щелчок управления он и выберите "Edit Breakpoint". В синем пузыре, который появляется, нажмите + кнопка на праве открыть Breakpoint Actions: сопроводительный текст http://idisk.mac.com/cdespinosa/Public/Breakpoint%20Actions.png
Вводит Ваш текст журнала там. Любое выражение, которое может быть распечатано в Отладчике, может использоваться при разграничивании знаки.
Для отладки Objective C обычно более полезно выбрать "Debugger Command" из всплывающего окна и войти 'почтовый [[метод объекта] метод]' для печати строки описания объекта Objective C или результата вызова метода.
Удостоверяются, что нажали флажок "Continue" на верхнее правое, таким образом, выполнение продолжается после журнала.
Преимущества этого по NSLog и printf:
Также проверяют кнопку Speak; замечательно для отладки полноэкранных приложений, где Вы не видите, что отладка регистрируется.
В моем проекте у меня есть специализированное решение на основе DebugOutput.m, Это добавляет файл & номер строки к выводу отладки, помогая определить, куда тот синтезируемый текст прибывает из, все еще сохраняя это кратким.
я увеличил стандартное решение с маской отладки, так, чтобы я мог включить и выключить отладку для конкретных областей функциональности в моем приложении. В Debug.h я имею
typedef enum {
kDebugMaskAp- = 1,
kDebugMaskXMLParser = 1 << 1,
kDebugMaskNetwork = 1 << 2,
kDebugMaskAnalytics = 1 << 3,
kDebugMaskCache = 1 << 4,
} debugBitMask;
#define debugForComponent(mask,format,...) if( currentDebugMask() & mask) [[DebugOutput sharedDebug] output:__FILE__ lineNumber:__LINE__ input:(format), ##__VA_ARGS__]
И в Debug.m
-(void)output:(char*)fileName lineNumber:(int)lineNumber input:(NSString*)input, ...
{
va_list argList;
NSString *filePath, *formatStr;
// Build the path string
filePath = [[NSString alloc] initWithBytes:fileName length:strlen(fileName) encoding:NSUTF8StringEncoding];
// Process arguments, resulting in a format string
va_start(argList, input);
formatStr = [[NSString alloc] initWithFormat:input arguments:argList];
va_end(argList);
// Call NSLog, prepending the filename and line number
NSLog(@"File:%s Line:%d %@",[((DEBUG_SHOW_FULLPATH) ? filePath : [filePath lastPathComponent]) UTF8String], lineNumber, formatStr);
[filePath release];
[formatStr release];
}
В приложении, вызовы выглядят примерно так:
debugForComponent(kDebugMaskApp,@"Request failed - error %@", [error localizedDescription]);
Я просто использую замену вся функциональность....
я отключаю все свои операторы NSLog путем замены NSLog (" с//*** NSLog ("
Тот способ, которым я могу просто найти его (использование находят во всех файлах проекта) с//*** NSLog (" и повторно включите им
, Ничто не полагает, но он работает:)
Вот отличный код, который я нашел где-то в Интернете. Он определяет новые функции DLog () и ALog (). Сообщения DLog появляются только тогда, когда приложение скомпилировано с флагом -DDEBUG (определите DEBUG). ВСЕГДА появляются сообщения ALog (даже в режиме Release).
// DLog is almost a drop-in replacement for NSLog
// DLog();
// DLog(@"here");
// DLog(@"value: %d", x);
// Unfortunately this doesn't work DLog(aStringVariable); you have to do this instead DLog(@"%@", aStringVariable);
#ifdef DEBUG
# define DLog(fmt, ...) NSLog((@"%s [Line %d] " fmt), __PRETTY_FUNCTION__, __LINE__, ##__VA_ARGS__);
#else
# define DLog(...)
#endif
// ALog always displays output regardless of the DEBUG setting
#define ALog(fmt, ...) NSLog((@"%s [Line %d] " fmt), __PRETTY_FUNCTION__, __LINE__, ##__VA_ARGS__);