格式sectionNameKeyPath NSFetchedResultsController – Swift
我试图格式化我的sectionNameKeyPath
我的核心数据获取使用存储的NSDate
属性。 它是完全正常工作,并根据NSDate
将logging分为不同的部分,但我不知道如何格式化以dd-mm-yyyy显示。
我知道如何格式化NSDate使用:
let date = NSDate(timeIntervalSince1970:myTimeInterval) let dateFormatter = NSDateFormatter() dateFormatter.dateFormat = "dd-MM-yyyy"
我目前的获取请求使用核心数据属性sectionDate
作为sectionDate
的部分
取
let fetchRequest = NSFetchRequest(entityName: "VisitDetails") let primarySortDescriptor = NSSortDescriptor(key: "dateDue", ascending: false) let sortDescriptors = [primarySortDescriptor] fetchRequest.sortDescriptors = sortDescriptors let frc = NSFetchedResultsController( fetchRequest: fetchRequest, managedObjectContext: self.managedObjectContext!, sectionNameKeyPath: "dateSections", cacheName: nil) frc.delegate = self
所以为了澄清我想格式化输出和sorting只是dd-MM-yyy。 目前看起来像
我认为一个黑客正在创build一个额外的属性,并input一个格式化的string,然后用这个来区分结果?
我只是为了一个我正在做的项目而做了这个。 以下是我所做的:
可选,但强烈build议,是设置mogenerator。 这里有一个很好的教程来设置你的核心数据项目来使用它。
无论如何,在你的数据模型中,确保你有一个与实体关联的NSManagedObject子类。 如果你还没有,而你不使用mogenerator,那么你可以做苹果的方式 。
在您的VisitDetails类中,添加:
var formattedDateDue: String { get { let dateFormatter = NSDateFormatter() // Apple suggested locale-aware technique: // dateFormatter.dateStyle = .ShortStyle // dateFormatter.timeStyle = .NoStyle // ..or to stick to your original question: dateFormatter.dateFormat = "dd-MM-yyyy" return dateFormatter.stringFromDate(self.dateDue) } }
(假设您希望您的部分在dateDue的date上进行分组,否则请为您的dateSections属性进行计算属性。)然后,您可以从上面修改抓取的结果控制器以使用计算属性:
let frc = NSFetchedResultsController( fetchRequest: fetchRequest, managedObjectContext: self.managedObjectContext!, sectionNameKeyPath: "formattedDateDue", cacheName: nil)
这就是它的全部!
- 在UIViewController中的多个collectionView – IOS的快速
- 渐变animation – 慢下来,加快速度
- 在Swift中使用WKWebView进行身份validation
- 无法专门化非genericstypes“设置”
- Swift不转换Objective-C NSError **抛出
- 带有Aspect的UIImageView使用AutoLayout填充自定义的UITableViewCell
- 在单独的View Controller上使用scrollViewDidScroll时,无法更改UINavigationBar的样式
- Swift做子类inheritance初始化?
- 如何禁用日志logging?