使用 Swift 2.0 将从在线 csv 文件接收的数据保存到 Core Data
Save data received from an online csv file into Core Data with Swift 2.0
我对 Swift 有点陌生。所以我试图导入这个上传的 csv 文件,其中包含一个英文单词列表及其相应的中文和泰语翻译。我在 AppDelegate 中创建了一个 csv 解析器,并且正在使用 print 显示数据。但是,我无法将数据保存在 Coredata 实体中。我有一个名为 Words 的简单核心数据实体,包含 englishwords、chinesewords、thaiwords 列。
这是我的代码:
func preloadData () {
// Remove all the menu items before preloading
//removeData()
var error:NSError?
let remoteURL = NSURL(string: "http://dethink.co/words.csv")!
let wordsFromCsv = parseCSV(remoteURL, encoding: NSUTF8StringEncoding, error: &error)
let context: NSManagedObjectContext = self.managedObjectContext
for word in wordsFromCsv! {
var new_word = NSEntityDescription.insertNewObjectForEntityForName ("Words", inManagedObjectContext: context ) as NSManagedObject
.......
}
}
接下来我该怎么做?
最好了解更多信息,特别是您的 CSV 数据结构是什么,但基本上您需要做的是:
// associate the values from your csv to the word istance
new_word.englishwords = word.english
new_word.chinesewords = word.chinese
new_word.thaiwords = word.thaiwords
// end of for loop
最后保存你的上下文:
do {
try context.save()
} catch {
print("Unresolved error")
}
看到你的数据是这样的:
mango,芒果,มะม่วง
apple,苹果,à¹à¸à¸›à¹€à¸›à¸´à¹‰à¸¥
banana,香蕉,à¸à¸¥à¹‰à¸§à¸¢
milk,牛奶,นม
water,水,น้ำ
tea,茶,ชา
coffee,å’–å•¡,à¸à¸²à¹à¸Ÿ
eat,åƒ,à¸à¸´à¸™
drink,å–,ดื่ม
see,è§,เห็น
sit,å,นั่ง
stand,ç«™,ยื¸™
并假设您的 parseCSV
函数(您未共享)returns 一个数组数组 ([[String]]
) - 并假设您生成了一个 NSManagedObject
subclass调用了Word
,你可以在循环中填充如下:
var newWord = NSEntityDescription.insertNewObjectForEntityForName("Words",
inManagedObjectContext: context ) as! Word
newWord.string = word[0] as? String
newWord.firstWeirdString = word[1] as? String
newWord.secondWeirdString = word[2] as? String
在循环外保存。显然,您的 Word
class.
中可能会有更有意义的属性名称
我对 Swift 有点陌生。所以我试图导入这个上传的 csv 文件,其中包含一个英文单词列表及其相应的中文和泰语翻译。我在 AppDelegate 中创建了一个 csv 解析器,并且正在使用 print 显示数据。但是,我无法将数据保存在 Coredata 实体中。我有一个名为 Words 的简单核心数据实体,包含 englishwords、chinesewords、thaiwords 列。
这是我的代码:
func preloadData () {
// Remove all the menu items before preloading
//removeData()
var error:NSError?
let remoteURL = NSURL(string: "http://dethink.co/words.csv")!
let wordsFromCsv = parseCSV(remoteURL, encoding: NSUTF8StringEncoding, error: &error)
let context: NSManagedObjectContext = self.managedObjectContext
for word in wordsFromCsv! {
var new_word = NSEntityDescription.insertNewObjectForEntityForName ("Words", inManagedObjectContext: context ) as NSManagedObject
.......
}
}
接下来我该怎么做?
最好了解更多信息,特别是您的 CSV 数据结构是什么,但基本上您需要做的是:
// associate the values from your csv to the word istance
new_word.englishwords = word.english
new_word.chinesewords = word.chinese
new_word.thaiwords = word.thaiwords
// end of for loop
最后保存你的上下文:
do {
try context.save()
} catch {
print("Unresolved error")
}
看到你的数据是这样的:
mango,芒果,มะม่วง
apple,苹果,à¹à¸à¸›à¹€à¸›à¸´à¹‰à¸¥
banana,香蕉,à¸à¸¥à¹‰à¸§à¸¢
milk,牛奶,นม
water,水,น้ำ
tea,茶,ชา
coffee,å’–å•¡,à¸à¸²à¹à¸Ÿ
eat,åƒ,à¸à¸´à¸™
drink,å–,ดื่ม
see,è§,เห็น
sit,å,นั่ง
stand,ç«™,ยื¸™
并假设您的 parseCSV
函数(您未共享)returns 一个数组数组 ([[String]]
) - 并假设您生成了一个 NSManagedObject
subclass调用了Word
,你可以在循环中填充如下:
var newWord = NSEntityDescription.insertNewObjectForEntityForName("Words",
inManagedObjectContext: context ) as! Word
newWord.string = word[0] as? String
newWord.firstWeirdString = word[1] as? String
newWord.secondWeirdString = word[2] as? String
在循环外保存。显然,您的 Word
class.