Swift:使用多种类型对变量建模

时间:2018-04-22 18:04:23

标签: ios swift xcode variables modeling

我正在构建一个警报应用程序,其中每个警报都有与之关联的声音。

声音可以是歌曲,艺术家([歌曲])或播放列表([歌曲]);所有这些都有标题和其他特定属性。

我希望能够做一些像alarm.sound.title这样的事情,无论是歌曲,艺术家还是播放列表,都会返回标题。我还需要实现逻辑,其中应用程序的行为取决于它是歌曲,艺术家还是播放列表。

我不确定是否应该创建一个具有type属性和子类歌曲,艺术家,播放列表的声音类,或者是否有更好的方法来构建数据。我读过关于类型转换的内容,但我不确定这是否是正确的方向。

任何有关如何建模的建议都将受到赞赏。感谢

1 个答案:

答案 0 :(得分:0)

由于你想使用Swift,我建议使用协议。这会给你所需要的。简单的例子:

class Song: Sound {
    var title: String
    var length: TimeInterval

    init(title: String, length: TimeInterval) {
        self.title = title
        self.length = length
    }
}

class Artist: Sound {
    var title: String {
        return "Artist"
    }
    var length: TimeInterval {
        return 11.1
    }
}

协议将定义接口。然后你可以创建符合协议的各种类 - 底层实现可以完全不同:

title

然后,您只需在符合Sound协议的任何对象上访问let sound1: Sound = Song(title: "Song", length: 1) let sound2: Sound = Artist() print("\(sound1.title)") // prints: Song print("\(sound2.title)") // prints: Artist

{{1}}