如何在核心数据中存储数组 (Swift)
How do you store an array in core data (Swift)
我的代码读取一个文本文件并将文件的内容存储在一个数组中。我在下一步时遇到了麻烦;将数组的内容传输到 Core Data 中。 .txt 文件只是一个简短的水果列表。实体是 "Fruit",属性是 "fruitname"。
打印时只显示最后一个数组元素。这是我的代码:-
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
苹果
杏
香蕉
覆盆子
黑莓
蓝莓
椰子
蔓越莓
日期
火龙果
图
葡萄
番石榴
甘露
猕猴桃
柠檬
酸橙
荔枝
芒果
瓜
橙子
番木瓜
菠萝
覆盆子
杨桃
草莓
西瓜
//核心数据打印
可选(........
水果名称=西瓜;
})]
有人可以帮助确保 fruitArray 中的所有内容都保存在核心数据中吗?提前致谢。
您只创建了一个 newFruit
。因此,您的 for fruit in fruitArray
循环只是重复重新分配 fruitname
属性.
将您的代码更改为:
for fruit in fruitArray {
var newFruit = NSEntityDescription.insertNewObjectForEntityForName ("Fruit",
inManagedObjectContext: context) as NSManagedObject
newFruit.setValue(fruit, forKey: "fruitname")
}
我的代码读取一个文本文件并将文件的内容存储在一个数组中。我在下一步时遇到了麻烦;将数组的内容传输到 Core Data 中。 .txt 文件只是一个简短的水果列表。实体是 "Fruit",属性是 "fruitname"。
打印时只显示最后一个数组元素。这是我的代码:-
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 苹果 杏 香蕉 覆盆子 黑莓 蓝莓 椰子 蔓越莓 日期 火龙果 图 葡萄 番石榴 甘露 猕猴桃 柠檬 酸橙 荔枝 芒果 瓜 橙子 番木瓜 菠萝 覆盆子 杨桃 草莓 西瓜
//核心数据打印
可选(........ 水果名称=西瓜; })]
有人可以帮助确保 fruitArray 中的所有内容都保存在核心数据中吗?提前致谢。
您只创建了一个 newFruit
。因此,您的 for fruit in fruitArray
循环只是重复重新分配 fruitname
属性.
将您的代码更改为:
for fruit in fruitArray {
var newFruit = NSEntityDescription.insertNewObjectForEntityForName ("Fruit",
inManagedObjectContext: context) as NSManagedObject
newFruit.setValue(fruit, forKey: "fruitname")
}