2015-02-24 4 views
4

Мой код читает текстовый файл и сохраняет содержимое файла в массиве. У меня возникают проблемы со следующим шагом; передавая содержимое массива в Core Data. Файл .txt - это всего лишь краткий список фруктов. Сущность - «Фрукты», а атрибут - «имя фрукта».Как хранить массив в данных ядра (Swift)

Только последний элемент массива появляется при печати. Вот мой код: -

import UIKit 
    import CoreData 

    class ViewController: UIViewController { 

    override func viewDidLoad() { 
    super.viewDidLoad() 
    // Do any additional setup after loading the view, typically from a nib. 


    // STORE .TXT FILE IN ARRAY..... 
    let bundle = NSBundle.mainBundle() 
    let fruitList = bundle.pathForResource("List of Fruits", ofType: "txt") 

    let fruitArray = String(contentsOfFile: fruitList!, encoding: NSUTF8StringEncoding, error: nil)!.componentsSeparatedByString("\r") 


    for x in fruitArray { 
     println(x) 

    } 

    // STORE FRUIT-ARRAY IN CORE DATA...... 
    var appDel = UIApplication.sharedApplication().delegate as AppDelegate 

    var context : NSManagedObjectContext! = appDel.managedObjectContext! 

    var newFruit = NSEntityDescription.insertNewObjectForEntityForName("Fruit", inManagedObjectContext: context) as NSManagedObject 

    for fruit in fruitArray { 

     newFruit.setValue(fruit, forKey: "fruitname") 
    } 

    context.save(nil) 


    // RETRIEVE AND PRINT STORED VALUES.... 
    var request = NSFetchRequest(entityName: "Fruit") 
    request.returnsObjectsAsFaults = false 

    var results = context.executeFetchRequest(request, error: nil) 

    println(results) 

} 

override func didReceiveMemoryWarning() { 
    super.didReceiveMemoryWarning() 
    // Dispose of any resources that can be recreated. 
} 

} 

Это выход из обоих Println заявлений ....

// Println из fruitArray Яблоко абрикос Banana Черника Blackberry Blueberry Кокосовое клюквы Дата Dragonfruit Fig Виноград Guava HoneydewКиви Lemon Lime Личи Манго Melon Оранжевый Papaya Ананас малина карамболой Клубничный Арбуз

// Println основных данных

факультативных (....... . fruitname = Арбуз; })]

Может кто-нибудь помочь, чтобы убедиться, что все в fruitArray сохраняется в основных данных? Заранее спасибо.

ответ

4

Вы создали только один newFruit. Таким образом, ваш цикл for fruit in fruitArray просто повторно переназначает свойство fruitname.

Измените свой код:

for fruit in fruitArray { 
    var newFruit = NSEntityDescription.insertNewObjectForEntityForName ("Fruit", 
    inManagedObjectContext: context) as NSManagedObject 

    newFruit.setValue(fruit, forKey: "fruitname") 
} 
+1

Следовательно .Вмонтировать-NEW-OBJECT-FOR-ОБЪЕКТ-ForName. Я должен был это понять. Спасибо за решение моей проблемы, GoZoner. Жаль, что у меня больше репутации. – BadLuckJ

Смежные вопросы