CS193p 2021 #3 MVVM
May 28, 2021
影片
課程範例
model,MemoryGame.swift
import Foundationstruct MemoryGame<CardContent> {
private(set) var cards: Array<Card>
func choose(_ card: Card) {
}
init(numberOfPairsOfCards: Int, createCardContent: (Int) -> CardContent) {
cards = Array<Card>()
for pairIndex in 0..<numberOfPairsOfCards {
let content = createCardContent(pairIndex)
cards.append(Card(content: content))
cards.append(Card(content: content))
}
}
struct Card {
var isFaceUp = true
var isMatched = false
var content: CardContent
}
}
view model,EmojiMemoryGame.swift
import Foundationclass EmojiMemoryGame {
static let emojis = ["🚲", "🚂", "🚁", "🚜", "🚕", "🏎", "🚑", "🚓", "🚒", "✈️", "🚀", "⛵️", "🛸", "🛶", "🚌", "🏍", "🛺", "🚠", "🛵", "🚗", "🚚", "🚇", "🛻", "🚝"]
static func createMemoryGame() -> MemoryGame<String> {
MemoryGame<String>(numberOfPairsOfCards: 4) { pairIndex in
emojis[pairIndex]
}
}
private var model = createMemoryGame()
var cards: Array<MemoryGame<String>.Card> {
return model.cards
}
}
view,ContentView.swift
尚未調整,程式同 Lecture 2。在 Lecture 4 時 view 將串接 view mode。