我的代碼是這樣的:核心數據:如何在swift中將巨大的數組插入核心數據?
import Foundation
import CoreData
import UIKit
class BARCODEDIMENSION: NSManagedObject {
@NSManaged var barcode: String
@NSManaged var catid: Int32
@NSManaged var favorite: Bool
@NSManaged var name: String
@NSManaged var subcatid: Int32
class func getProducts(moc: NSManagedObjectContext) {
var url: NSURL! = NSURL(string: "link")
var request = NSURLRequest(URL: url)
var response: NSURLResponse ?
var error: NSError ?
var data: NSData ? = NSURLConnection.sendSynchronousRequest(request, returningResponse: & response, error: & error)
if let data: NSData = NSURLConnection.sendSynchronousRequest(request, returningResponse: & response, error: & error) {
var parsingError: NSError ?
if
let rateDictionary = NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions.MutableContainers, error: & parsingError) as ? NSArray {
for i in 0.. < rateDictionary.count {
let row: NSDictionary = rateDictionary[i] as!NSDictionary;
var name: String = row["name"] as!String
var catid: Int32 = Int32(row["catid"] !.integerValue)
var subcatid: Int32 = Int32(row["subcatid"] !.integerValue)
var barcode: String = row["barcode"] as!String
var favorite: Bool = false
insertBarcodeDimension(moc, barcode: barcode, catid: catid, favorite: favorite, name: name, subcatid: subcatid)
}
}
}
}
class func insertBarcodeDimension(moc: NSManagedObjectContext, barcode: String, catid: Int32, favorite: Bool, name: String, subcatid: Int32) - > BARCODEDIMENSION {
let newItem = NSEntityDescription.insertNewObjectForEntityForName("BARCODEDIMENSION", inManagedObjectContext: moc) as!BARCODEDIMENSION
newItem.barcode = barcode
newItem.name = name
newItem.catid = catid
newItem.subcatid = subcatid
newItem.favorite = favorite
var error: NSError ?
if (moc.save(& error)) {
println(error ? .localizedDescription)
}
return newItem
}
}
在上面的代碼中,你可以看到,當我打電話的getProducts(MOC)的功能。它正在逐個添加。我通過這種方式成功地將項目添加到核心數據。但速度有問題。它的速度太慢,無法逐個添加20000個項目。我想知道是否有另一種方式直接將數組添加到已經在rateDictionary上採用的核心數據中。
核心數據編程指南有關於「高效導入數據」的完整章節。那可能是一個開始的好地方... –
我已經注意到了,但我不明白。對不起,因爲我開始新編寫swift代碼。如果你有一個例子,它會更好。 –
你最好學習如何至少閱讀Objective-C。所有的框架仍然是用Objective-C編寫的,如果你看不懂它們,你將會非常困難。現在消耗能量。 –