核心数据 – 从Swift的CoreData获取最新的项目
发布时间:2020-12-14 05:41:23 所属栏目:百科 来源:网络整理
导读:我是CoreData的新手,已经阅读了几个教程,但空手而归.大多数教程都集中在从CoreData中获取,以填充一个表视图,这不是我现在所做的. 以下是我在CoreData中设置数据的方式.所有类型均为Double,但日期为NSDate let appDelegate = (UIApplication.sharedApplicatio
我是CoreData的新手,已经阅读了几个教程,但空手而归.大多数教程都集中在从CoreData中获取,以填充一个表视图,这不是我现在所做的.
以下是我在CoreData中设置数据的方式.所有类型均为Double,但日期为NSDate let appDelegate = (UIApplication.sharedApplication().delegate as AppDelegate) let managedObjectContext = appDelegate.managedObjectContext let entityDescription = NSEntityDescription.entityForName("Meditation",inManagedObjectContext: managedObjectContext!) let meditation = NSManagedObject(entity: entityDescription!,insertIntoManagedObjectContext: managedObjectContext!) meditation.setValue(settings.minutes,forKey: "length") meditation.setValue(settings.warmup,forKey: "warmup") meditation.setValue(settings.cooldown,forKey: "cooldown") meditation.setValue(NSDate(),forKey: "date") // fetch stuff from CoreData var request = NSFetchRequest(entityName: "Meditation") var error:NSError? = nil var results:NSArray = managedObjectContext!.executeFetchRequest(request,error: &error)! for res in results { println(res) } 这是我要做的结果,但我无法访问像.minutes,.date等等.我知道我也没有正确得到最后一个项目,我只是想首先打印对象上的属性. 我希望如何获取最近的对象以及显示它的属性的帮助 谢谢!
首先,使用“编辑器 – >创建NSManagedObject在Xcode中创建一个”Meditation.swift“文件
子类…“.生成的文件应该是这样的 import Foundation import CoreData class Meditation: NSManagedObject { @NSManaged var length: NSNumber @NSManaged var warmup: NSNumber @NSManaged var cooldown: NSNumber @NSManaged var date: NSDate } 现在您可以直接使用属性而不是键值编码 let meditation = NSEntityDescription.insertNewObjectForEntityForName("Meditation",inManagedObjectContext: managedObjectContext) as Meditation meditation.length = ... meditation.warmup = ... meditation.cooldown = ... meditation.date = NSDate() var error : NSError? if !managedObjectContext.save(&error) { println("save failed: (error?.localizedDescription)") } 获取对象时,转换结果 let request = NSFetchRequest(entityName: "Meditation") var error : NSError? let result = managedObjectContext.executeFetchRequest(request,error: &error) if let objects = result as? [Meditation] { for meditation in objects { println(meditation.length) println(meditation.date) // ... } } else { println("fetch failed: (error?.localizedDescription)") } 最后,要只获取最新的对象,请添加一个排序描述符 let request = NSFetchRequest(entityName: "Meditation") request.sortDescriptors = [NSSortDescriptor(key: "date",ascending: false)] request.fetchLimit = 1 // ... 那么对象数组最多只包含一个对象,它是最近的一个对象. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |