我有服务器端表'user'和'user_currency'。
在我的前端iOS应用程序中,我希望能够在应用程序的各个区域中检索用户的当前货币(应用程序内货币)金额。例如,它几乎会显示在应用程序的每个视图中,显示它们当前有多少。在执行需要货币的操作时也会使用它。
最好如何设置?
A)假设我们只有一个名为fetchUserCurrencyWithCompletion的方法。此方法将异步从服务器获取数据,然后调用者需要在完成块中提供有关如何处理它的一些代码。这有一个问题。如果应用程序中的每个视图都显示用户的货币金额,必须等到异步完成,每次都会导致一些“屏幕/视图闪烁”,因为视图将首先加载,然后一段时间后将显示货币。
B)在fetchUserCurrencyWithCompletion中实现缓存。而不是(void),使它(NSNumber *)fetchUserCurrencyWithCompletion。立即返回的NSNumber值将包含缓存的货币值。然后再次,在运行异步提取后,将运行调用者完成代码,并且他们可以相应地更新其货币使用情况。当fetchedResult与缓存不同时,这只会导致屏幕闪烁显示正在显示的货币金额。哪个不应该经常。如果有另一个客户端使用这个服务器,比如一个网站,那么网站上的用户可以花费5种货币,iOS应用程序最初将通过缓存提取15种货币,然后在服务器提取完成后更新为10 。但我没有其他客户。只是iOS应用程序。所以这绝不会发生。
然后,当应用程序的某个区域要执行需要货币的操作时,它将使用fetchUserCurrencyWithCompletion,并等待完成以获取服务器结果,以确保用户有足够的货币来执行操作。
这是设计这个的好方法吗?我还是很新,并且不确定最好的方法。
答案 0 :(得分:0)
实际上你在B点提出的建议看起来非常好,但我也建议你做以下事情: