Как я могу сохранить несколько данных в одном контексте в CoreData?

У меня проблема с сохранением нескольких данных из массива в один контекст. Я пытаюсь сделать это обычным способом, но если я попытаюсь распечатать данные, там отображается только [, ] в консоли! Я не понимаю?

Не могли бы вы помочь мне?

Вот мой код:

override func viewDidLoad() {
    super.viewDidLoad()
    let context: NSManagedObjectContext = (UIApplication.sharedApplication().delegate as AppDelegate).managedObjectContext!
    let array = ["Hey", "there", "I", "am", "an", "example"]

    let entityExample = NSEntityDescription.entityForName("Example", inManagedObjectContext: context)
    var newItemExample = Example(entity: entityExample!, insertIntoManagedObjectContext: context)

    for string in array {
        newItemExample.string = string
        println(newItemExample.string)
        context.save(nil)
    }

    let fetchRequest = NSFetchRequest(entityName: "Example")
    var dataExample = [Example]()

    dataExample = context.executeFetchRequest(fetchRequest, error: nil) as [Example]

    println(dataExample) }

Что я делаю не так и как это работает?

1 ответ

Решение

Вы создаете только один управляемый объект. Вы должны создать newEntity в течение цикла. Или другой способ не использовать для цикла. Сделайте ваш код немного функциональным

array.map { word -> Void in
    let newItemExample = Example(entity: entityExample!, insertIntoManagedObjectContext:context)
    newItemExample.string = word
}

var error: NSError?
context.save(&error)
if let error = error {
    println("Error: \(error.localizedDescription)")
}
Другие вопросы по тегам