作为初学iOS开发人员,我觉得这一定是一个常见的问题,但我无法弄明白。如果有重复的问题,请告诉我。
我有一个从API获取数据的DataManager:
import Foundation
import CoreData
import Alamofire
import SwiftyJSON
class DataManager {
static let dataManager = DataManager()
var resourceArray = [NSManagedObject]()
// etc
func getResourceFromJSON() -> NSArray {
let appDelegate = UIApplication.sharedApplication().delegate as! AppDelegate
let managedObjectContext = appDelegate.managedObjectContext
Alamofire.request(.GET, RESOURCE_REF) .responseJSON { response in
var fakeArray = [NSManagedObject]()
if ((response.result.value) != nil) {
let swiftyJsonVar = JSON(response.result.value!)
let jsonArray = swiftyJsonVar.arrayObject as! [[String: AnyObject]]
for item in jsonArray {
//resource
let entity = NSEntityDescription.entityForName("Resource", inManagedObjectContext: managedObjectContext)
let resource = Resource(entity: entity!, insertIntoManagedObjectContext: managedObjectContext)
// let tag = item["tags"]
resource.setValue(item["id"], forKey: "id")
resource.setValue(item["title"], forKey: "title")
resource.setValue(item["type"], forKey: "type")
resource.setValue(item["url"], forKey: "url")
do {
try managedObjectContext.save()
fakeArray.append(resource)
} catch let error as NSError {
print("Could not save \(error), \(error.userInfo)")
}
}
}
self.resourceArray = fakeArray
}
return resourceArray
}
在我的ViewController类中,我得到了数据:
override func viewDidLoad() {
super.viewDidLoad()
self.resourceArray = DataManager.dataManager.getResourceFromJSON() as! [NSManagedObject]
}
我的问题是:当我运行我的应用程序时,数据仅在第二次加载时加载。所以基本上,当我第一次进入我的ViewController类时,数据不会加载而resourceArray有0个项目。但是,如果我再次加载它,数据将加载并填充我的resourceArray。
如何在第一次访问该视图时加载我的数据?
谢谢