我正在使用 EAWiFiUnconfiguredAccessoryBrowser 来检测 EAWiFiUnconfiguredAccessory 。启动附件的代码搜索以下内容:
- (void)viewDidLoad {
[super viewDidLoad];
if (_accessories == nil) {
_accessories = [[NSMutableArray alloc] init];
}
if (_browser == nil) {
_browser = [[EAWiFiUnconfiguredAccessoryBrowser alloc] initWithDelegate:self queue:nil];
_browser.delegate = self;
}
}
不幸的是,它只在第一次加载View时才找到配件。如果我回到上一个视图然后重新加载视图,它就找不到它们。
我试过了:
这是我得到的最新代码(与上面的代码一起参考):
- (void) viewWillAppear:(BOOL)animated{
NSLog(@"view will appear");
if (_accessories != nil) {
[_accessories removeAllObjects];
}
[self.tableView reloadData];
[self initializeBrowswerAndStartSearch];
}
- (void) initializeBrowswerAndStartSearch{
if (_browser != nil) {
[_browser stopSearchingForUnconfiguredAccessories];
}
[_browser startSearchingForUnconfiguredAccessoriesMatchingPredicate:nil];
}
- (void) viewWillDisappear:(BOOL)animated{
[_browser stopSearchingForUnconfiguredAccessories];
}
APP中某处的附件列表信息似乎缓存。如果我重新启动APP,它会找到它们,所以我猜有些东西我不知道。
任何帮助?
答案 0 :(得分:4)
所以我有同样的问题..你应该使用unconfiguredAccessories
数组。另外,请尝试保持浏览器实例的活动状态。如果您发现设备一次,并重新实例化浏览器,则不会再次找到它
答案 1 :(得分:1)
EAWiFiUnconfiguredAccessoryBrowser存在问题,并且在某些用例中无法提供可靠的结果。我想你应该试试这个
public abstract class BaseClass<T> where T : ICollection<int>
{
public T Numbers { get; set; }
}
public abstract class SubClass : BaseClass<ObservableCollection<int>>
{
}
下面的方法使浏览器对象为nil并重新初始化它,在这种情况下,浏览器对象将始终返回更新的(即正确的)值。它对我来说很完美。
- (void) viewWillAppear:(BOOL)animated{
NSLog(@"view will appear");
if (_accessories != nil) {
[_accessories removeAllObjects];
}
[self.tableView reloadData];
[self initializeBrowswerAndStartSearch];
}
如果您认为EAWiFiUnconfiguredAccessoryBrowser未提供正确的结果,请尝试此操作。
答案 2 :(得分:0)
我也有这个问题。因此,我构建了一个名为WAC服务的单例,然后您可以在应用程序生命周期中保持此单例存活。您想要加载未配置的应用的任何地方。只需从[_browser unconfiguredAccessories]加载它。