【问题标题】:populate a button from coredata从 coredata 填充一个按钮
【发布时间】:2014-10-10 10:09:20
【问题描述】:

我花了很多时间试图弄清楚这一点,却一无所获。

我有一个带有 NSDate 属性的实体,它成功保存了。

我到底如何从商店(仅限年份部分)获取 NSDate 并使其填充按钮上的文本。 因此可以稍后按下按钮并将其带到另一个视图控制器/表视图控制器。

我花了几个小时试图弄清楚这一点,我完全被困住了,找不到任何例子。

请问有人有时间帮忙吗? 使用斯威夫特 (希望我已经正确地格式化了这个问题,这里有点菜鸟) 感谢您的关注

//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

【问题讨论】:

    标签: core-data swift nsfetchrequest


    【解决方案1】:

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

    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!
    

    【讨论】:

    • 感谢您的回答,但它还不够愚蠢。
    • 没什么好说的了。我无法想象让它变得更愚蠢。这是对您问题的完美答案,因此您应该接受它或至少对其进行投票,直到您整理好自己的东西为止。 - 需要注意的一点是,它比执行 fetch 请求要简单得多。但简单不等于笨。
    • 我为您的对象添加了一个简单的获取请求作为示例。希望对您有所帮助。
    • 感谢您抽出宝贵时间提供帮助,非常感谢。
    【解决方案2】:

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

    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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-07-29
      • 2020-12-22
      • 1970-01-01
      • 2012-03-19
      • 2021-12-02
      • 1970-01-01
      • 2012-05-26
      相关资源
      最近更新 更多