तरह से मैं हाल ही में एक अनुप्रयोग में स्थिति के इस एक ही तरह से संभाला स्थिर की पूरी तरह से मिलकर एक संरचना का उपयोग किया गया सदस्य, एक एनम के बजाए - कुछ हिस्सों में क्योंकि मेरे पास प्रत्येक विकल्प के साथ सहयोग करने के लिए अधिक जानकारी थी, क्योंकि मुझे toRaw()
और fromRaw()
हर जगह कॉल करने में बीमार पड़ गया था, और कुछ हद तक क्योंकि (जैसा कि आपके उदाहरण से पता चला है) जब यह पता चला कि आप चक्र के माध्यम से चक्र नहीं ले सकते हैं, या मामलों की पूरी सूची प्राप्त नहीं कर सकते हैं तो एनम इसका लाभ खो देता है।
struct Sizes {
static let Easy = "Easy"
static let Normal = "Normal"
static let Hard = "Hard"
static func sizes() -> [String] {
return [Easy, Normal, Hard]
}
static func boardSize (s:String) -> (Int,Int) {
let d = [
Easy:(12,7),
Normal:(14,8),
Hard:(16,9)
]
return d[s]!
}
}
struct Styles {
static let Animals = "Animals"
static let Snacks = "Snacks"
static func styles() -> [String] {
return [Animals, Snacks]
}
static func pieces (s:String) -> (Int,Int) {
let d = [
Animals:(11,110),
Snacks:(21,210)
]
return d[s]!
}
}
अब मैं इस तरह बात कर सकते हैं जब हम cellForRowAtIndexPath
के लिए मिलता है:
तो, क्या मैंने किया था यह था
let section = indexPath.section
let row = indexPath.row
switch section {
case 0:
cell.textLabel.text = Sizes.sizes()[row]
case 1:
cell.textLabel.text = Styles.styles()[row]
default:
cell.textLabel.text = "" // throwaway
}
अनिवार्य रूप से मैं बस के साथ नामस्थान के रूप में दो Structs का उपयोग किया है कुछ जोड़ा बुद्धिमानी। मैं यह नहीं कह रहा हूं कि आप जो कर रहे हैं उससे बेहतर है; वे दोनों बेहद स्वाधीन हैं। यह विचार करने का एक और विचार है।
सरल उत्तर है, इस प्रकार के बारे में झूठ बोलने की कोशिश न करें; indexPath.row एक इंट है, बिल्ली नहीं। हालांकि, इसे रोकने मत देना; आप जो कर रहे हैं वह बेहद स्वाभाविक है और आपको इस सड़क पर जाना जारी रखना चाहिए। बहुत अच्छा। – matt