【发布时间】:2015-05-22 20:51:42
【问题描述】:
我正在尝试通过检查自上次检查后是否有任何MPMediaItemPropertyPlayCounts 发生更改来更新用户的音乐收听历史记录。现在,每次检查时,我都会查询整个 iPod 库并比较它们在 Core Data 中已有的播放次数。如果当前播放计数 != 存储在 Core Data 中的播放计数,我们会对这首歌做一些事情,因为我们知道用户最近听过它。
在我的代码中,我正在努力循环遍历所有 iPod 歌曲和同时搜索相应的 Core Data 对象。下面的代码打印出太多行。如何在 for 循环中搜索 Core Data 中的对象?
class func checkiPodSongsForUpdate() {
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 queryResult = query.collections as! [MPMediaItemCollection]
for song in queryResult {
for song in song.items as! [MPMediaItem] {
request.predicate = NSPredicate(format: "title = %@", "\(song.valueForProperty(MPMediaItemPropertyTitle))")
for result: AnyObject in results! {
if let playCount = result.valueForKey("playCount") as? String {
if playCount != "\(song.valueForProperty(MPMediaItemPropertyPlayCount))" {
println("\(song.valueForProperty(MPMediaItemPropertyTitle)) has a new play count.")
} else {
println("User hasn't listened to this song since last check.")
}
}
}
}
}
}
【问题讨论】:
标签: ios swift for-loop core-data