用户向其包中添加项目。只要将商品添加到包中,我们就会进行网络通话以确保该商品仍然可用。网络通话需要几秒钟才能在后台完成。获取topVC或Visible VC并检查特定VC是否在堆栈中
当一个项目被添加到购物车时,它被存储在一个可以从应用程序的任何地方访问的单例中。就像这样:
static let shared = Cart()
var products = [Product]()
当网络调用返回和产品是不可用的,我们从单中删除。如果购物车VC在网络呼叫期间打开,则会导致问题,因为表视图需要重新加载。出于这个原因,我们需要检查可见的VC是否是购物车VC并重新加载表格视图。我还想检查CartVC是否在内存中并重新加载表格视图。因为如果购物车VC在内存中并且低于另一个VC,那么它也将具有不良数据,并且当用户关闭VC时,它们将看到不好的数据。我会怎么做?
在此标记为重复项目之前,我没有检查其他帖子,没有一项效果很好。还有很多方法可以做到这一点,我想知道哪些是最快的3.
为什么我们需要注销通知。这有效,但我们不会在应用程序的任何位置注销我们的通知。这真的很糟糕吗?所有的通知都在告诉VC重新加载表格视图 –
这并不算太坏。通过注销通知时,它不是可见的VC保持表视图不必要的重新加载。如果你保持注册风险投资的生命,那么你不需要在'viewWillAppear'中重新加载表格,但是如果你有很多项目在同一时间回到无法使用的状态,那么你可能会看到一个看不见的表现视图一遍又一遍地重新加载。还要确保通知中的重新调用正在主线程中发生,否则会发生奇怪的事情。 – theMikeSwan
完美。谢谢。我们正在重新加载视图反正会出现,所以问题甚至不是问题。我只是没有意识到这一点。我们如何在viewwilldispapear上取消注册通知? –