Ios 核心数据在后台插入大数据

Ios 核心数据在后台插入大数据,ios,json,swift,core-data,dispatch-async,Ios,Json,Swift,Core Data,Dispatch Async,我希望我的应用程序将所有服务器信息加载到后台的核心数据实体中。我创建了名为“事件”的新实体,然后在其中创建了5个属性。此外,我还为我的实体创建了NSManagedObject子类: import Foundation import CoreData @objc(Event) class Event: NSManagedObject { @NSManaged var category: String @NSManaged var date: String @NSMana

我希望我的应用程序将所有服务器信息加载到后台的核心数据实体中。我创建了名为“事件”的新实体,然后在其中创建了5个属性。此外,我还为我的实体创建了NSManagedObject子类:

import Foundation
import CoreData

@objc(Event)
class Event: NSManagedObject {

    @NSManaged var category: String
    @NSManaged var date: String
    @NSManaged var event: String
    @NSManaged var location: String
    @NSManaged var time: String
}
下面是我加载所有数据并希望将其插入核心数据实体的方式:

func loadAllData(){
    println("loading all data")

    let params = ServerConstants.infoParam + "=true"

    // creating request, set its method to POST and append params to request
    var request = NSMutableURLRequest(URL: NSURL(string: ServerConstants.getInfoURL)!)
    request.HTTPMethod = "POST"
    request.HTTPBody = params.dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: false)

    // start loading data in background
    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0)) {
        var session = NSURLSession.sharedSession()
        var task = session.dataTaskWithRequest(request){ (data, response, error) -> Void in
            if error == nil {
                let json = JSON(data: data)
                self.defaults.setObject(json["lastCategoriesId"].string, forKey: "lastCategoriesId")
                self.defaults.setObject(json["lastEventsId"].string, forKey: "lastEventsId")

                //println(json)
                var maxValue = Float(json["categories"].count + json["events"].count)
                println("maxself. - \(maxValue)")

                var error: NSError?
                var array = json["events"]

                let newItem = NSEntityDescription.insertNewObjectForEntityForName("Event", inManagedObjectContext: self.managedObjectContext!) as! Event

                for var i: Int = 0; i < array.count; i++ {                        
                    newItem.category = array[i]["category"].string!
                    newItem.event = array[i]["event"].string!
                    newItem.location = array[i]["location"].string!
                    newItem.date = array[i]["date"].string!
                    newItem.time = array[i]["time"].string!

                    println(i)
                }
                if !self.managedObjectContext!.save(&error) {
                    println("Could not save \(error), \(error?.userInfo)")
                }
                println("done")
            }
        }
        task.resume()
    }
}
我尝试运行以下for循环:

for var i: Int = 0; i < array.count; i++ {
    println(i)
}
变量i的
:Int=0;i
同样,它在1秒钟内进行1次迭代。但是如果我把索引的最大长度设为3500,它会迭代整个循环约1秒

for var i: Int = 0; i < 3500; i++ {
    println(i)
}
变量i的
:Int=0;i<3500;i++{
println(i)
}

可能swift每次都在计算array.count,与php count(array)相同 尝试在常量中定义array.count

 let limit = array.count;
 for i in 0..<limit {
    //do your stuff
 }
let limit=array.count;

对于0中的i..可能swift每次都在计算array.count,与php count(array)相同 尝试在常量中定义array.count

 let limit = array.count;
 for i in 0..<limit {
    //do your stuff
 }
let limit=array.count;
因为我在0。。