0
親クラスにグローバル配列が定義されていて、REST
サービスGET
からオブジェクトを埋め込んだ配列を取得しようとしています。JSON
ファイルから呼び出します。 JSONファイルからオブジェクトが埋め込まれたグローバル配列が定義されており、そのデータが内部クラスtableviewcell
内で使用されるという考えがあります。しかし、データがいっぱいになったことに気がつき、json
を正しく取得すると、データが配列に入力されていますが、メソッドのすぐ外側がすべて消去されます。内部クラス内では、データは存在せず、ネットワーク要求括弧のすぐ外側にも存在します。私はその問題が何であるか想像できません。ここグローバル配列から消えているデータ
グローバルアレイとして配列の私の初期化である:ここ
class ContentDeliveryViewController: UITableViewController, UISearchBarDelegate, UISearchDisplayDelegate{
public var ListOfFiles: [Asset_Content] = []
public var ListOfTags: [String] = []
は、JSONを取得していることを示したブラケットの外側印刷ステートメントを含めてアレイで充填する方法であります配列は空だった。
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
print("short CALLED")
let cell = self.tableView.dequeueReusableCell(withIdentifier: "ContentDeliveryCell", for: indexPath as IndexPath) as! ContentDeliveryCell
var content: AWSContent
//fix this
if(tableView == self.searchDisplayController?.searchResultsTableView){
print("search part called!!")
content = filteredList[indexPath.row]
}else{
content = contents![indexPath.row]
}
if(content.key.contains(IDENTIFIER)){
//
let url = URL(string: URL)
let task = URLSession.shared.dataTask(with: url!){
data, response, error in guard error == nil else{
print(error!)
return
}
guard let data = data else{
print("Data is empty")
return
}
let json = try! JSONSerialization.jsonObject(with: data, options: JSONSerialization.ReadingOptions.allowFragments) as? [[String: AnyObject]]
var asset: Asset_Content
for jay in json! {
let category = jay["BIGCATEGORY"] as? String
let diagnosis = jay["DIAGNOSIS"] as? String
let perspective = jay["PERSPECTIVE"] as? String
let name = jay["NAME"] as? String
let title = jay["Title"] as? String
let UnparsedTags = jay["TAGS"] as? String
let filename = jay["FILENAME"] as? String
let tagArray = UnparsedTags?.characters.split(separator: ",")
for tag in tagArray!{
if(self.ListOfTags.contains(String(tag))){
}else{
self.ListOfTags.append(String(tag))
print("TAGCOUNT == ", self.ListOfTags.count)
}
}
asset = Asset_Content(category!, diagnosis!, perspective!, name!, title!, filename!)
self.loadJson(forFile: asset)
print("RightCount === ", self.ListOfFiles.count)// FILLED ARRAY
}
print("FirstCount === ", self.ListOfFiles.count)//FILLED ARRAY
}
task.resume()
cell.isHidden = true
print("FirstCount === ", self.ListOfFiles.count)// EMPTY ARRAY
print("TAGCOUNT == ", self.ListOfTags.count) // EMPTY ARRAY
return cell
}else{
cell.prefix = prefix
cell.content = content
print("KEY" ,content.key)
cell.isHidden = false
return cell
}
}
「cellForRowAt」はダウンロードするのに間違った場所ですrse JSON。 'dataTask'が非同期で動作するため、配列は空です。 – vadian
終了後にデータを読み込む方法を教えてください。 –