NSPredicate в showBluetoothAccessoryPickerWithNameFilter

Я использую метод showBluetoothAccessoryPickerWithNameFilter:completion:, который является частью внешней вспомогательной инфраструктуры. Он просто возвращает устройства Bluetooth, которые нашел iPhone, и вы можете выбрать одно для подключения к нему.

Если я использую эти аргументы: showBluetoothAccessoryPickerWithNameFilter:nil completion:nil, он возвращает все устройства, но вы можете указать, какие устройства он должен возвращать, с помощью NSPredicate (аргумент фильтра). Итак, я попытался создать такой предикат:

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"self CONTAINS MyString"];
[[EAAccessoryManager sharedAccessoryManager] showBluetoothAccessoryPickerWithNameFilter:predicate completion:nil]

Но когда я запускаю приложение, возникает ошибка, например:

class не соответствует кодированию значения ключа для ключа MyString.

Я полагаю, что проблема связана со словом self в предикате, потому что в этом случае self означает экземпляр текущего класса. Я прав? Как мне написать предикат, если я хочу получить только те устройства, которые содержат MyString в своем имени? Спасибо вам, ребята.


person DanielH    schedule 30.07.2013    source источник


Ответы (1)


В документации EAAccessoryManager говорится, что предикат оценивается с использованием имени аксессуара. Ваша проблема в том, что вы должны поместить MyString в кавычки:

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"self CONTAINS 'MyString'"];

Надеюсь, это поможет.

person e1985    schedule 30.07.2013