我們正在考慮將應用程序從obj-c移植到Swift。一個問題是我們在obj-c代碼中有一個UITableView,它的對象是Header
或Item
類型的對象。基本上,它解決了它在cellForRowAtIndexPath中的哪種類型。 Swift Arrays(據我所知) 只能處理單一類型。鑑於此,我們如何處理UITableView中使用的兩種不同類型?包裝對象像DataObj那裏我們有每個工作的nillable實例?如何在Swift中爲UITableView處理數組中的兩種不同類型
2
A
回答
6
下面是一個使用的協議團結你的兩個類的方法獲取對象的類型:
protocol TableItem {
}
class Header: TableItem {
// Header stuff
}
class Item: TableItem {
// Item stuff
}
// Then your array can store objects that implement TableItem
let arr: [TableItem] = [Header(), Item()]
for item in arr {
if item is Header {
println("it is a Header")
} else if item is Item {
println("it is an Item")
}
}
的這種過度[AnyObject]
或NSMutableArray
的優點是,只有其中的類實現TableItem
將被允許在您的陣列中,因此您可以獲得額外的類型安全性。
0
Swift數組可以存儲不同類型的對象。要做到這一點,你必須聲明爲AnyObject陣列
var array:[AnyObject] = []
在此之後對cellForRowAtIndexPath
您可以通過選配的展開
if let header = array[indexPath.row] as? Header{
//return header cell here
}else{
let item = array[indexPath.row] as! Item
// return item cell
}
相關問題
- 1. 如何在swift中使用泛型類型處理不同的類型?
- 2. 如何理解「===(identity)」用於比較Swift中的兩種類型
- 3. 在javascript或jquery中比較兩種不同的數組類型
- 4. 如何管理同一類中的兩種類型的json?
- 5. 如何在android中比較兩種不同類型的數組列表?
- 6. 如何在UIPickerView中爲兩個不同的組件顯示兩種不同的對象類型?
- 7. 在R中的數據幀中組合兩種不同的數據類型
- 8. 兩種不同類型的
- 9. 如何在iOS Swift中將NSDictionary作爲返回類型處理?
- 10. 在2種不同類型的數組
- 11. 如何在haskell中結合兩種不同類型的列表
- 12. 如何在TypeScript中區分兩種不同的對象類型?
- 13. 如何處理這種類型的數據到數組 - JAVA
- 14. 在Swift中存儲數組中不同類型的閉包
- 15. 兩種不同類型
- 16. 如何在Swift中將2種類型的CGPath定義存儲在數組中
- 17. Retrofit/GSON:如何處理兩種類型的響應:JSON對象和JSON數組?
- 18. 在C#中使用兩種不同數據類型的二維數組
- 19. 數組PHP中的多種類型的處理
- 20. 如何在同一個圖表中爲兩種不同類型的系列添加兩個不同的鼠標?
- 21. 如何獲得兩種不同類型的兩種不同的二叉樹?
- 22. 具有兩種不同數據類型的二維數組?
- 23. 如何在Swift中爲字典類型的數組應用removeAtIndex?
- 24. 如何區分python 2.7中兩種不同類型的文件?
- 25. scala中如何比較兩種不同類型的對象?
- 26. 如何在PHP中處理不同的賬戶類型?
- 27. 如何在python中處理不同類型的編碼?
- 28. 在同一列中總結兩種不同的類型
- 29. 如何處理UICollectionViewCell中的UITableView與iOS Swift 3中的交互?
- 30. 兩個不同的單元格類型在一個UITableView中
你可以使用NSMutableArray/NSArray嗎? –
嗯...所以...可能,但似乎是一個臨時sol'n一點,除非,我錯了(並且誠實地不是一個全職的iOS開發)。我敢肯定,大多數項目都必須解決這個問題。將使用NSMutablreArray是規範的選擇?這感覺有點像在腳本語言中使用'exec'。 – timpone