【问题标题】:How to check if a tinyDB tag has any attributes in App Inventor如何在 App Inventor 中检查 tinyDB 标签是否具有任何属性
【发布时间】:2016-04-15 00:59:00
【问题描述】:

我需要一些帮助来解决 App Inventor 2 中的一个问题。情况是我有一个解析的 JSON 结果,然后将它作为列表 (storeparseData) 存储在 tinyDB 标记中。

问题是,我在屏幕启动时完成了这个功能,所以用该 JSON 列表填充 tinyDB 标记,然后根据用户请求搜索特定值。

当应用程序正在运行并且我输入搜索条件时,我收到以下错误“参数 [empty-string] 是 GetValue 的参数数量错误”。我想,它在 tinyDB 标记中找不到任何东西要搜索,导致 JSON 数据需要一些时间来获取和解析。

这是我现在检查存储列表是否在 tinyDB 中所做的工作:

这里我检查存储在 tinyDB 中的列表是否有一个项目:

那么,我如何检查 tinyDB 是否使用 JSON 结果列表填充在此标记中,以便我可以搜索它?这在 App Inventor 2 中是否可行?

如果可能,请有人通过示例代码块或类似的教程(如果有)就这个问题提出建议。提前感谢大家的回答。

【问题讨论】:

    标签: android json app-inventor tinydb


    【解决方案1】:

    这看起来很奇怪...一个复杂的if then else 结构、大量空套接字和您的比较if "storeparsedData" = <empty string> 总是错误的...显然这没有意义...

    看来你的想法太复杂了? 这个呢:

    正如my answer to your other question 中已经推荐的那样,您应该学习如何使用列表...

    另外做一些教程可能有助于学习更多基础知识...

    回答您的问题“您能解释一下为什么选择在那里创建一个空列表吗?”:如果您正在使用示例中的列表并且您正在尝试读取列表来自TinyDB,那么您还必须考虑如果该标签在TinyDB 中不可用(例如在第一次启动应用程序之后)会发生什么。对于列表,在这种情况下应该返回一个 空列表。注意:is list empty? 块总是需要一个列表。如果将valueIfTagNotThere 设置为空字符串,则会出现运行时错误...

    【讨论】:

    • 你好@Taifun。有时我确实觉得很复杂。同时,我尝试了您提到的简化解决方案,但没有使用“创建空列表”,而是使用了空文本“”。你能解释一下为什么你选择在那里创建一个空列表吗?该列表应该已经预先存储在 tinyDB 中,不是吗?
    • 您的解决方案@Taifun,似乎可以检查 tinyDB 是否已填充。但有一个问题。当应用程序启动(第一次运行)时,tinyDB 是空的,因此必须获取、解析 JSON 数据并最终存储在 tinyDB 中。此功能需要一段时间,大约 1'35'' 或更多。我试图通过在屏幕启动时通过按钮发出消息警报来应对它。事情是这样的,智能手机似乎被冻结,并且从安卓操作系统中弹出等待或关闭应用程序错误。我该如何以专业的方式处理这种延误?欢迎任何解决方案,如果适用,带有示例块。
    • 关于为什么要使用空列表?请参阅我的更新答案。关于另一个问题:问题是,您如何获取 json 数据以及如何准备数据?您可能想为此提出一个新问题。
    • 嗨@Taifun,非常感谢您的编辑。关于 json 数据,使用我需要的解析标准直接从站点获取。结果存储在 tinyDB 中的标签“storeparsedData”中。这是最有效的方法,还是更好的方法,例如在 tinyDB 中获取 json 数据并随后解析?这可以使用像“getWeb.SaveResponce”这样的块来完成吗?应该如何使用这个块?请指教。
    • 如前所述,ask a new question...
    【解决方案2】:

    您可以使用时钟功能来延迟时间。首先,只需在“when Screen1.Initialize”部分将全局DelayCountdown设置为特定数字。然后,通过使用“when Clock1.Timer”功能,您只需要在执行另一个功能之前添加另一个检查DelayCountdown是否等于0。

    【讨论】:

    • 嗨@zmd94。如果我做对了,我应该使用DelayCountdown时钟函数来延迟getWeb函数吗?问题是,当应用程序启动时,用户进入一个满足输入搜索条件的屏幕,应用程序可以在 tinyDB 的“storeparsedData”标签中找到。当用户获得应用程序的控制权时,这些数据应该存在,那么应该如何以及应该使用计时器延迟哪些功能?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-30
    相关资源
    最近更新 更多