【发布时间】:2015-08-04 06:49:17
【问题描述】:
我正在尝试将 Core Data 中的多个对象保存到 for 循环中的 IPodSongs 实体,即当前在 for song in result{} 循环中的歌曲的标题。但是我的代码只保存了循环中的最后一首歌曲,并且一直覆盖同一个对象。我不需要覆盖同一个对象,而是每次都需要创建一个新对象。我做错了什么?
func fetchiPodSongsOnSignup() {
var appDel: AppDelegate = UIApplication.sharedApplication().delegate as! AppDelegate
var context: NSManagedObjectContext = appDel.managedObjectContext!
var newSong = NSEntityDescription.insertNewObjectForEntityForName("IPodSongs", inManagedObjectContext: context) as! NSManagedObject
var request = NSFetchRequest(entityName: "IPodSongs")
request.returnsObjectsAsFaults = false
var results = context.executeFetchRequest(request, error: nil)
let query = MPMediaQuery.songsQuery()
let result = query.collections as! [MPMediaItemCollection]
for song in result {
for song in song.items as! [MPMediaItem] {
newSong.setValue("\(song.valueForProperty(MPMediaItemPropertyTitle))", forKey: "title")
println(newSong)
context.save(nil)
}
}
【问题讨论】:
-
好吧,您创建一个对象
var newSong = ....,然后在每次循环迭代中覆盖其属性。解决方案不是很明显吗? -
请不要在保存中传递
nil。传入一个错误指针并检查错误。总是!
标签: ios swift for-loop core-data