2014-10-10 69 views
0

我花了很多时间试图弄清楚这一点,并没有得到任何地方。从coredata填充一个按钮

我有一个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 

回答

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! 
+0

谢谢您的回答,但其不够虚弱。 – user3799446 2014-10-10 13:57:03

+0

没有别的可说的。我无法想象让它变成什么笨蛋。这是你的问题的完美答案,所以你应该接受它,或者至少投票直到你把你的东西放在一起。 - 需要注意的一点是,它比执行获取请求要简单得多。但简单不一样愚蠢。 – Mundi 2014-10-11 14:19:07

+0

我以您的对象为例添加了一个简单的获取请求。希望能帮助到你。 – Mundi 2014-10-11 14:24:37

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