2016-01-10 109 views
0

我需要對App Inventor 2中的問題提供一些幫助。情況是,我解析了一個JSON結果,然後將它存儲在tinyDB標記爲列表(storeparseData)。如何檢查一個tinyDB標籤在App Inventor中是否有任何屬性

問題是,我在屏幕啓動時完成了此功能,因此要使用該JSON列表填充tinyDB標記,然後在用戶請求上搜索特定值。

由於應用程序正在運行,我輸入搜索條件,我得到以下錯誤「的參數[空字符串]是對的GetValue參數錯號碼」。我想,它發現還沒有任何東西存儲在tinyDB標籤中進行搜索,導致JSON數據需要一些時間來獲取和解析。

以下是我已經完蛋了,現在檢查,如果存儲的名單是在tinyDB:

enter image description here

這裏我檢查保存列表中tinyDB一個項目:

enter image description here

那麼我該如何檢查tinyDB是否填充到帶有JSON結果列表的標籤中,這樣我就可以搜索到它了?這可能在App Inventor 2中嗎?

如有可能,請有人就此問題給出一個示例代碼塊或類似教程(如果有)的建議。預先感謝您的答覆。

回答

1

這看起來很奇怪......複雜if then else結構,空插座的負載和你的比較if "storeparsedData" = <empty string>永遠是假的......顯然,這沒有任何意義......

它看起來像你所想太複雜? 什麼樣:

enter image description here

正如my answer to your other question已經建議你應該學會如何與清單工作...

也在做一些更多的教程可能幫助你學習一些基礎知識更多...

要回答你的問題「你能解釋爲什麼你選擇在那裏創建一個空的列表。「:如果您正在處理列表,並且您嘗試從TinyDB讀取列表,那麼您還必須考慮應該發生什麼,如果該標記在TinyDB中不可用(例如啓動應用程序之後在列表中,空列表應該被返回。注意:is list empty?塊總是需要一個列表。如果你設置valueIfTagNotThere爲空字符串,那麼你會得到一個運行時錯誤。

+0

嗨@Taifun。有時候我確實覺得很複雜。與此同時,我已經嘗試了一個簡化的解決方案,但您不是使用「創建空列表」,而是使用空文本「」。你能解釋爲什麼你選擇在那裏創建一個空列表嗎?該列表應該已經預先存儲在tinyDB中,不是嗎? – user3244633

+0

您的解決方案@Taifun,似乎在檢查tinyDB是否被填充的技巧。但有一個問題。當應用程序啓動時(第一次運行),tinyDB是空的,所以JSON數據必須被提取,解析並最終存儲在tinyDB中。此功能需要一段時間,大約1'35''或更長。我試圖應付它,通過在屏幕啓動時使用按鈕提醒消息。事情是,智能手機似乎被凍結,等待或解僱應用程序錯誤彈出形式的android操作系統。我怎樣才能以專業的方式處理這種延遲?任何解決方案,如果適用,請提供樣本塊,歡迎提供。 – user3244633

+0

關於_爲什麼要使用空列表?_請參閱我的更新答案。關於另一個問題:問題是,如何獲取json數據以及如何準備數據?你可能想問一個新的問題。 – Taifun

0

您可以使用時鐘功能來延遲時間。首先,在「當Screen1.Initialize」部分中將全局DelayCountdown設置爲特定數字。然後,通過使用「Clock1.Timer」函數時,只需要在執行另一個功能之前再次檢查DelayCountdown是否等於零。

enter image description here

+0

Hi @ zmd94。如果我理解正確,我應該使用DelayCountdown時鐘函數來延遲getWeb函數?問題在於,隨着應用程序啓動,用戶會進入一個屏幕,輸入搜索條件滿足應用程序在tinyDB的「storeparsedData」標記中查找。當用戶獲得應用程序的控制權時,數據應該存在,那麼如何使用計時器來延遲和使用哪個函數? – user3244633

+0

對不起,我不知道如何解決它。 – zmd94

相關問題