当前位置: 首页 > 知识库问答 >
问题:

将阵列从ios主应用程序传递到WatchKit扩展

单品
2023-03-14

我有一个测试WatchKit扩展项目,它调用WKInterfaceController OpenParentApplication:为了获得显示主ios应用程序的信息,然后查询数据库以获取要发送回watch的数据,如下所示。

if ([userInfo objectForKey:@"categoryRequest"])
{   
    BFLiteDatabase * db = [BFDatabase getDatabase];
    NSMutableArray * categories = [NSMutableArray new];
    BFLiteCommand * cmd =  [db commandFromString:[BFCategory selectStatement]];
    while([cmd readNext])
    {
        [categories addObject: [[BFShoppingCategory alloc] initFromCommand:cmd]];
    }

    NSDictionary * result = [[NSDictionary alloc] initWithDictionary:[NSDictionary dictionaryWithObject:[NSArray arrayWithArray:categories] forKey:@"categoryResult"]];
    reply(result);    
}

但是我一回复就会得到一个sigbat,并且我已经将它缩小到一个事实,即我将nsarray赋给一个字典值的值。

我不明白为什么这是违法的,什么是最好的解决办法?

敬克里斯蒂安·安徒生

共有3个答案

章侯林
2023-03-14

好吧,我发现了一个问题,我认为问题是categories数组包含BFShoppingCategory对象,我认为这些对象不是serilizeble的,所以我将不使用对象,而是传递基本数组,这应该可以工作

贺高杰
2023-03-14

从文档中

字典的内容必须可以序列化到属性列表文件

这意味着nscoding将不起作用。您可以使用rawrepresentable协议并从原始值重新创建对象。

曾英睿
2023-03-14

除了为了创建最终的nsdictionary而投入了太多的工作之外,我找不出任何明显的错误。

这将是一种更干净的处理方法:

nsdictionary*result=@{@“categoryresult”:[NSArray ArrayWithArray:categories]};

 类似资料:
  • 问题背景: 主机iOS应用程序以每秒10帧的帧速率动态生成UIImage,我只想从WatchKit扩展中检索UIImage数据,并以相同的速率在Watch应用程序上显示图像。 我当前的解决方案: 我为iOS应用和WatchKit扩展设置了一个应用组。iOS应用程序将每个帧写入一个png文件(约10k)到组共享位置,WatchKit扩展使用NSTimer以相同的速率读取文件,然后将数据发布到Watc

  • 我已将WatchKit应用程序配置为在iPhone 6上运行,WatchKit应用程序方案可执行文件指向WatchKit应用程序。app,Watch界面指向Main,但IOS应用程序并不仅仅启动WatchKit应用程序。 当我选择WatchKit应用程序在苹果6上运行时,苹果6模拟器正在启动,在模拟器返回到IOS级别后,我看到一秒钟的黑屏,但主应用程序没有启动,只有苹果手表模拟器上的WatchKi

  • 我正在运行一个带有和的Python web服务器,基映像为。 我想传递我的客户端证书DN,如果一个存在。为此,我定义了以下: 我想让我的Flask代码接收参数,但找不到如何接收。 环顾四周,我发现它应该驻留在的对象中,但是在打印环境内容时,我没有看到任何这样的键。 在通过邮递员发送请求时,返回以下内容以供参考: dict_keys.input“、”wsgi.file_wrapper“、”wsgi.

  • 我有一个带有一个条形图和一个表格的报告。这两个元素由从我的Java应用程序传递到报告的对象列表填充。 现在我想将这两个元素放在两个不同的子报告中,但是我不知道如何将对象列表传递给子报告。我已经将每个对象的字段添加为主报表中的字段和子报表中的参数,但它不起作用。 谁能帮我解决这个问题?

  • 我在Windows Phone8.1应用程序中执行推送通知时遇到了一些问题。我已检索到一个通道URI: 我可以发送Toast通知到我的设备,但我无法访问任何有关这个推送通知的信息,当我打开应用程序。通常会有一些“启动论点”或类似的东西,但我没有发现任何提供任何东西,当我启动通过轻击烤面包。 我读过一些帖子,有人建议我重写App.onLaunded(LaunchActivatedEventArgs)

  • 我想知道将字符串从Java程序传递到Python程序的最简单方法是什么。原因是我使用boilerpipe从web中提取一些文本,然后通过Java程序进行分析,但我还必须使用模式进行一些语义搜索。这只适用于python。 我不需要从python程序中获取结果,只需要python程序可以获取字符串。 我首先考虑让我的python程序听一段对话。txt文件,而java为其提供字符串,但我认为这太难了。