在showBluetoothAccessoryPickerWithNameFilter中使用NSPredicate

时间:2013-07-30 15:18:44

标签: ios bluetooth nspredicate external-accessory

我正在使用名为showBluetoothAccessoryPickerWithNameFilter:completion:的方法,它是外部附件框架的一部分。它只返回iPhone找到的蓝牙设备,你可以选择一个连接到它。

如果我使用这个参数:showBluetoothAccessoryPickerWithNameFilter:nil completion:nil,它将返回所有设备,但您可以使用NSPredicate(Filter参数)指定它应返回的设备。所以我尝试创建这样的谓词:

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

但是当我运行应用程序时,会出现类似错误:

  

类不是密钥值编码兼容的密钥MyString。

我认为问题与谓词中的self单词有关,因为在这种情况下self表示当前类的实例。我对吗?如果我想只获取名称中包含 MyString 的设备,我该如何编写谓词?谢谢你们。

1 个答案:

答案 0 :(得分:5)

EAAccessoryManager文档说明使用附件的名称评估谓词。你的问题是你应该把MyString放在引号之间:

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

希望它有所帮助。