2015-02-24 87 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語句輸出....

// fruitArray的的println 蘋果 杏 香蕉 越橘 黑莓 藍莓 椰子 蔓越莓 日期 火龍果 圖 葡萄 番石榴 甘露 獼猴桃 檸檬 石灰 荔枝 芒果 甜瓜 橙色 木瓜 菠蘿 樹莓 楊桃 草莓 西瓜

//調用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

因此.insert-NEW-OBJECT-FOR-實體-的forName。我應該抓住那個。感謝您解決我的問題,GoZoner。希望我有更多的代表。 – BadLuckJ 2015-02-24 04:47:05