在我的应用中使用Singleton类,只是创建了一个json数组。在UICollectionView中,我返回带有共享实例的单例类,如下所示
func collectionView(collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
print("Count: ",InsuranceManager.sharedInstance.InsTypeListArray.count) // Output Count : 0
return InsuranceManager.sharedInstance.InsTypeListArray.count
}
计数始终为“0”。因此集合视图单元格不显示。单例类:
import UIKit
class InsuranceManager {
static let sharedInstance = InsuranceManager()
var InsTypeListArray = [InsuranceType]()
var TypeArray = [InsuranceType]()
var CompListArray = [Companies]()
func getInsuranceDetails() {
if let path = NSBundle.mainBundle().pathForResource("type", ofType: "json") {
do
{
let data = try NSData(contentsOfURL: NSURL(fileURLWithPath: path), options: NSDataReadingOptions.DataReadingMappedIfSafe)
let jsonObj = JSON(data: data)
if jsonObj != JSON.null
{
print("jsonData:\(jsonObj)")
if let items = jsonObj["type"].array
{
// Removing the old data from Insurance type array
self.InsTypeListArray.removeAll()
for item in items
{
var type = InsuranceType()
type.id = item["id"].int
type.name = item["name"].string
type.selectedQuantity = 1
type.imageName = item["imageName"].string
// Adding new data into Insurance type array
self.InsTypeListArray.append(type)
}
print("Insurance List Array Count:\(self.InsTypeListArray.count)")
}
}
else {
print("could not get json from file, make sure that file contains valid json.")
}
}
catch let error as NSError {
print(error.localizedDescription)
}
}
else {
print("Invalid filename/path.")
}
}
}
计数值变为0,因此集合视图单元格为空。
struct InsuranceType
{
var id: Int?
var name: String?
var selectedQuantity: Int?
var imageName: String?
}
我的json文件是:
{
"type": [
{
"id": 1001,
"name": "Vehicle",
"imageName": "vehicle"
},
{
"id": 1002,
"name": "Health",
"imageName": "health"
},
{
"id": 1003,
"name": "Life",
"imageName": "life"
},
{
"id": 1004,
"name": "House",
"imageName": "home"
},
{
"id": 1005,
"name": "Legal Protection",
"imageName": "legal"
},
{
"id": 1006,
"name": "Travel",
"imageName": "travel"
}
]
}
根据我在json“type”文件中的值,想要在UICollectionView中显示。请问有什么可以帮助我代码中的实际问题。提前致谢
答案 0 :(得分:1)
我认为你永远不会调用getInsuranceDetails函数。你只得到arrayValue。您可以调用该函数或在初始化
中执行此操作