将磁贴添加到 MS 波段警告 (iOS)

Posted

技术标签:

【中文标题】将磁贴添加到 MS 波段警告 (iOS)【英文标题】:Adding tile to MS Band warning (iOS) 【发布时间】:2015-04-15 20:22:13 【问题描述】:

我正在尝试使用 MSBand 文档中的代码添加磁贴。

编辑:我从来没有从这 2 行得到日志输出: NSLog(@"添加瓦片..."); if(error)NSLog(@"将图块添加到带区时出错:%@", error); ,我觉得很奇怪

 NSError *error;
MSBIcon *smallIcon = [MSBIcon iconWithUIImage:[UIImage imageNamed:@"MSB_white_x"] error:&error];
if(error)NSLog(@"small icon error: %@", error);

MSBIcon *tilecon = [MSBIcon iconWithUIImage:[UIImage imageNamed:@"MSB_white_xx"] error:&error];
if(error)NSLog(@"big icon error: %@", error);

NSUUID *tileID = [NSUUID UUID];
MSBTile *tile = [MSBTile tileWithId:tileID name:@"Something" tileIcon:tilecon smallIcon:smallIcon error:&error];
if(error)NSLog(@"tile creation error: %@", error);
[self.sensor.client.tileManager addTile:tile completionHandler:^(NSError *error) 
    NSLog(@"adding tile...");
    if(error)NSLog(@"error adding tile to band: %@", error);
];

但是当我尝试运行应用程序时,我收到以下警告:

警告:尝试在 PersonalStatisticsViewController: 0x14f5116b0 上显示 MSBAddTileDialogViewController_ios: 0x14f534e20,其视图不在窗口层次结构中!

我注意到“视图控制器”始终是根视图控制器。因此,当我第一次从另一个视图控制器而不是 root 中收到警告时,我尝试将 root 更改为我当前所在的任何 VC。我从 -()viewDidAppear 运行代码 我真的不明白为什么我会收到此警告,主要是因为我认为没有理由让磁贴创建尝试向应用程序 VC 添加任何内容(它应该只是将磁贴添加到 MSBAND)。

有人知道发生了什么吗? 提前致谢。

【问题讨论】:

当第 3 方应用程序尝试将磁贴添加到用户带时,Microsoft Band SDK 会显示一个对话框(模式视图),询问用户是否应继续执行来自第 3 方应用程序的安装请求.如果从尚未插入视图层次结构的视图中调用 addTile,那么您将看到此错误。 @MarkThistle 如果我尝试从 dispatch_sync 中运行 addTile 函数,它会阻止整个应用程序。我怀疑这可能是原因,因为我注意到在某些情况下添加磁贴会失败,但稍后会执行以下调用(因此我想调度它同步。) dispatch_sync 将按照 dispatch_sync 的预期阻止应用程序。如果您没有看到 NSLog(@"adding tile...");那么你有没有检查过 self.sensor.client.tileManager 中的所有对象都不是零?在 Objective-C 中,如果一个对象是 nil,那么对它的任何调用都是空操作。换句话说,它不会因为 nil 指针而使应用程序崩溃。所以,我会验证 self.sensor.client.tileManager 对象不是 nil。 【参考方案1】:

您是从哪里调用 addTile 的?

如果您从 viewDidLoad 中调用,那么您会看到这个问题。您应该将 addTile 调用移至 viewDidAppear。

参考这个 *** 问题:whose view is not in the window hierarchy

【讨论】:

抱歉回复晚了。如帖子中所述,我已经从 viewDidAppear 拨打电话。让我印象深刻的一件事是,通过我的测试,我从未偶然发现任何出现的对话框?我觉得奇怪的另一件事是它“没有呈现”的“根视图控制器”。如果我将另一个 vc 设置为“初始根”,那么 vc 将不会出现问题。我确实尝试从当时设置为 root 的 vc 中的 viewdidappear 中运行代码。 我做了一个编辑,我知道为什么,但是 addTile 不能正常工作这似乎很奇怪。

以上是关于将磁贴添加到 MS 波段警告 (iOS)的主要内容,如果未能解决你的问题,请参考以下文章

使用 SVG 时出现 SF 符号不可用警告

IOS警告消除

iOS 自己手动添加编译警告

《Motion Design for iOS》(二十七)

MySQL Error Log 中IO能力不足的警告分析

转:iOS警告收录及科学快速的消除方法