在哪里放置对结构数组进行操作的代码?

时间:2016-11-30 17:56:47

标签: arrays swift struct

如果我有一个结构和一些代码来处理这个结构的数组,那么放置这个代码的地方在哪里?

struct Thing {
    var id : String
    let type : ThingType
}

things:[Thing]?

我有代码从服务器检索值,该服务器返回100 Thing数组。代码应该放在哪里?

我目前将它定义为Struct的静态函数,但是如果有的话,我希望遵循约定。

1 个答案:

答案 0 :(得分:2)

从服务器检索protocol ThingProvider { func fetchThings() -> [Thing] } 实例的函数当然不应该是Thing的成员。

最好制作一个声明该功能的新协议,如下所示:

class DataBaseThingProvider: ThingProvider {

    init() {
        // open database connection
    }

    deinit() {
        // close database connection
    }

    func fetchThings() -> [Thing] {
        // fetch Things from database
    }
}

和符合类型:

class MockThingProvider: ThingProvider {

    func fetchThings() -> [Thing] {
        return [
            Thing(id: "MockThing1", type: thingType1),
            Thing(id: "MockThing2", type: thingType2),
            Thing(id: "MockThing3", type: thingType3)
        ]
    }
}

这样,您可以通过更换您使用的具体提供程序类来更改您使用的提供程序(Firebase,Parse,SQLite,CoreData,JSON,CSV等等)。所有其他代码都可以保持不变。< / p>

它还使您的代码更易于测试,因为您可以轻松构建模拟提供程序,从而将测试与生产后端分离。

{{1}}