我的问题看起来非常简单。但我正在努力争取一天。
我需要将struct变量声明为公共变量。这样UICollectionViewController数据方法就可以访问Struct变量。
我该怎么办? 我自己试了一下。但我无法实现它
class SkillsController: UICollectionViewController {
var mcnameArray :[String] = []
var mcidArray :[String] = []
func getSkills(){
Alamofire.request(.GET, "http://www.wols.com/index.php/capp/main_category_list")
.responseJSON { (_, _, data, _) in
let json = JSON(data!)
let Count = json.count
for index in 0...Count-1 {
var ds = json[index]["DISPLAY_STATUS"].string
if ds == "Y" {
var mcname = json[index]["MAIN_CATEGORY_NAME"].string
self.mcnameArray.append(mcname!)
var mcid = json[index]["MAIN_CATEGORY_ID"].string
self.mcidArray.append(mcid!)
}
}
var skill = Skills(mcname: self.mcnameArray, mcid: self.mcidArray)
println(skill.mcname.count)
}
}
override func collectionView(collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
//#warning Incomplete method implementation -- Return the number of items in the section
return skill.mcname.count// Throws an Error
}
答案 0 :(得分:0)
您的变量不是“私有”,而是本地作用域到它定义的函数。
如果您将其移至var mcnameArray
和var mcidArray
旁边,则也可以从其他功能访问它。
但是,由于您正在进行异步网络请求,因此该变量需要更改。您可能希望将其设置为可选(var skill: Skill?
),以便它在开头可以是nil
,然后再更改。