Кастинг NSObject к NSString

Вы можете использовать Array # lower для построения тегов сопоставления объектов с счетчиками, а затем использовать Object.entries с Array # map для преобразования объекта обратно к вашей исходной структуре массива "

let data = [{
    "tag": "#sala",
    "state": {
      "counter": 1
    }
  },
  {
    "tag": "#sala",
    "state": {
      "counter": 2
    }
  }
];

let newData = data.reduce(
  ( obj, { tag, state: { counter } } ) => ( obj[ tag ] = counter + (obj[ tag ] || 0), obj ), { }
);

// Object mapping tags to counter sums
console.log( newData );

// If you need your original array structure:
newData = Object.entries( newData ).map( ( [ key,value ]) => ( { tag: key, state: { counter: value } } ) );

console.log( newData );

7
задан Joel Hooks 6 April 2009 в 04:11
поделиться

2 ответа

Я полагаю, что это сделает то, в чем Вы нуждаетесь:

NSLog(@"lowerCaseString is: %@", [(NSString *)object lowercaseString]);

Обратите внимание, что я просто добавил * к Вашей второй строке кода для создания указателя на NSString. Надежда это помогает!

Adam

22
ответ дан 6 December 2019 в 07:08
поделиться

Почему объект объявляется как NSObject, если он, как предполагается, NSString? Если Вы намереваетесь назвать методы NSString на нем, объявить его как NSString или оставить его как идентификатор. Затем Вы не получите ошибки.

3
ответ дан 6 December 2019 в 07:08
поделиться
Другие вопросы по тегам:

Похожие вопросы: