第一个viewDidLoad iOS

时间:2016-05-03 23:29:11

标签: ios swift

作为初学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。

如何在第一次访问该视图时加载我的数据?

谢谢

0 个答案:

没有答案