从coredata填充一个按钮

时间:2014-10-10 10:09:20

标签: core-data swift nsfetchrequest

我花了很多时间试图解决这个问题并且没有在哪里。

我有一个具有NSDate属性的实体,该属性成功保存。

如何在地球上从商店(仅年份部分)获取NSDate并使其填充按钮上的文本。 因此可以稍后按下按钮并将其带到另一个View Controller / Table View Controller。

我花了好几个小时试图解决这个问题,我完全卡住了找不到任何例子。

有没有人有时间帮忙解决这个问题。 使用Swift (希望我已经正确地形成了这个问题,这里有一个菜鸟) 谢谢你的期待

//year button
@IBAction func btnYear(sender: AnyObject) {

  //APP DEL REFERANCE
  var appdel: AppDelegate = (UIApplication.sharedApplication().delegate as AppDelegate)
  var context: NSManagedObjectContext = appdel.managedObjectContext!
  let ent = NSEntityDescription.entityForName("FilmInfo", inManagedObjectContext: context)!

  // fetch request
  var request = NSFetchRequest(entityName: "FilmInfo")
  request.returnsObjectsAsFaults = false

2 个答案:

答案 0 :(得分:0)

首先,从您的数据中获取日期。

object.date

然后,对其进行格式化,以便您可以在按钮上显示它。

var formatter = NSDateFormatter()
formatter.dateStyle= .ShortStyle 
let buttonTitle = formatter.stringFromDate(object.date)

最后将标题指定给按钮

button.setTitle(buttonTitle, forState: .Normal)

首先到达对象,获取它。不要忘记执行您的获取请求。

var request = NSFetchRequest(entityName: "FilmInfo")
request.predicate = NSPredicate(format:"id = %@", aFilmInfoID) // example
request.fetchLimit = 1
let results = context.executeFetchRequest(request, error:nil)! as [FilmInfo]
let object = results.first!

答案 1 :(得分:0)

您需要在上下文中执行获取请求。

var resultsArray = context.executeFetchRequest(request,nil)
if let arr = resultsArray {
    //we have some results
    var firstObject: FilmInfo = arr[0] as FilmInfo
    var date = firstObject.date
}

如果您只对一个对象感兴趣,可以随时设置request.fetchLimit = 1

获得更高级的功能,您也可以只获取日期属性:

fetch.propertiesToFetch = ["date"]
fetch.resultType = .DictionaryResultType