ios - Swift - 按部分对核心数据进行排序

标签 ios xcode core-data swift nsfetchedresultscontroller

我已经设法按字母顺序对从核心数据收到的数据进行排序,现在我想将用户名放入每个字母的部分中。我知道最简单的方法是使用 NSFetchedResultsController,但我不知道如何使用它(很少有涉及 Swift 的教程)。

所以我的代码如下所示:

override func viewDidAppear(animated: Bool) {

    let appDel:AppDelegate = UIApplication.sharedApplication().delegate as AppDelegate
    let context:NSManagedObjectContext = appDel.managedObjectContext!
    let freq = NSFetchRequest(entityName: "Message")
    let en = NSEntityDescription.entityForName("Message", inManagedObjectContext: context)

    let fetchRequest = NSFetchRequest(entityName: "Message")
    let sortDescriptor = NSSortDescriptor(key: "username", ascending: true)
    fetchRequest.sortDescriptors = [sortDescriptor]

    myList = context.executeFetchRequest(fetchRequest, error: nil) as [Model]

    tv.reloadData()    
}

func numberOfSectionsInTableView(tableView: UITableView) -> Int {

    return 1
}

func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int{

    return myList.count
}

我希望有人能够阐明 NSFetchedResultsController 并帮助我继续前进。

如果我没有完全错的话,初始化看起来像这样,尽管我无法弄清楚“缓存名称”:

let resultsController = NSFetchedResultsController(fetchRequest: fetchRequest, managedObjectContext: myList, sectionNameKeyPath: "username", cacheName: <#String?#>)

任何有关如何继续的建议将不胜感激。

最佳答案

您可以通过复制和调整 Xcode 模板中的代码轻松设置抓取结果 Controller 。 (新建一个项目,Master-Detail,勾选“Use Core Data”,从MasterViewController复制过来。)

以下不是理想的解决方案,但我认为它适合您的经验水平。当您将 username 属性添加到 Message 实体对象时,还要添加另一个带有第一个字母的属性。然后在创建抓取结果 Controller 时使用这个新属性的名称作为sectionNameKeyPath参数。

不要太担心缓存参数。您可以将任何字符串放在那里,例如 "Root",或者甚至传递 nil 以不使用缓存,这在大多数情况下也很好。

关于ios - Swift - 按部分对核心数据进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27735586/

相关文章:

ios - 通过 iTunes 安装 IPA 分发但应用程序未运行?

ios - 如何快速自定义 UITableViewCell

php - AES256 从 iOS 到 PHP

ios - 多个 AVPlayer 实例同时暂停会导致短暂但烦人的卡住

html - 如何允许缩放 UIWebView(什么都试过了)

ios - 核心数据与 NSFetchedResultsController :Invalid update with with a property in fetchObjects

string - Swift - 从核心数据中获取字符串并以 UTF8 格式转换

iphone - Xcode 组织文件和文件夹(核心数据模型对象 - iPhone)

ios - 如何使用 iOS 9 和 Swift 在 Popover 中呈现 UIImagePickerController

ios - Google Analytics(分析):GANTrackerError 195946409-原因?