在Swift中使用不同函数的异步数据

时间:2018-04-01 16:21:27

标签: json swift design-patterns

所以我目前通过异步调用获取一些远程JSON数据。通过使用完成处理程序,我能够使用呼叫之外的数据。

但现在我想知道如何以正确的方式处理这些数据。

例如,我有不同的功能依赖于这些数据。每当我需要数据时,我都可以在这些函数中调用它。 E.g:

func generateRandomItem() {
    DataManager().requestData() { (result: [Model]) in
        //Generate Random item from the results of call here
    }
}


func listAlphabetically() {
    DataManager().requestData() { (result: [Model]) in
        //List all data alphabetically from the results of the call here
    }
}

但是我认为这种方法会浪费API调用,因为数据每周只会改变一次。

我正在考虑的另一种方法是在启动应用程序时调用此函数并将所有内容存储在全局变量中。然后,只要我需要,就可以在每个函数中使用此var。 E.g:

var allItems = [Model]()

func getAllItems() {
    DataManager().requestData() { (result: [Model]) in
        self.allItems = result
    }
}

这样做的缺点是数据只被拉入一次,并且从未更新,只能在应用程序启动时进行更新。

所以这不是一个技术问题,而是一个基本问题。我对Swift很陌生并寻找最好的设计模式。如果我在异步调用上的完成处理程序也是一种错误的方法,我想知道如何改进它!

0 个答案:

没有答案