Необъявленные идентификаторы в CBPeripheral Delegate [дубликат]

Вот ответ Counter для простейшего случая.

Это короче, чем выше, чем двухсторонний, потому что он точно выполняет именно то, что задает вопрос: сгенерируйте список того, что находится в первый список, но не второй.

from collections import Counter

lst1 = ['One', 'Two', 'Three', 'Four']
lst2 = ['One', 'Two']

c1 = Counter(lst1)
c2 = Counter(lst2)
diff = list((c1 - c2).elements())

В качестве альтернативы, в зависимости от ваших предпочтений читаемости, он делает достойный однострочный:

diff = list((Counter(lst1) - Counter(lst2)).elements())

Выход:

['Three', 'Four']

Обратите внимание, что вы можете удалить вызов list(...), если вы просто выполняете итерацию по нему.

Поскольку это решение использует счетчики, оно обрабатывает величины должным образом vs многие ответы на основе набора. Например, на этом входе:

lst1 = ['One', 'Two', 'Two', 'Two', 'Three', 'Three', 'Four']
lst2 = ['One', 'Two']

Выход:

['Two', 'Two', 'Three', 'Three', 'Four']
3
задан Jegus 14 November 2013 в 21:44
поделиться

1 ответ

Как насчет того, что вы просто используете UUID службы общего доступа напрямую?

if ( [aService.UUID isEqual:[CBUUID UUIDWithString:@"1800"]] )//0x1800 is the Generic Access Service Identifier
{
    [aPeripheral discoverCharacteristics:nil forService:aService];
}

Проверьте здесь подробную информацию о услуге общего доступа .

9
ответ дан Tommy Devoy 23 August 2018 в 02:00
поделиться
  • 1
    Ну, это решает предупреждения об устаревании ... но на самом деле это не объясняет, почему, черт возьми, они потрудились осуждать константы, если мы должны просто вручную переделать константы сами! Я думаю, Apple просто ненавидит нас – Jegus 22 November 2013 в 22:51
  • 2
    Кроме того, CBUUIDDeviceNameString можно найти здесь: developer.bluetooth.org/gatt/characteristics/Pages/… , это 0x2A00 – Dan 8 April 2014 в 00:05