- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我的应用程序非常简单:一个 TableViewController 显示存储在 Core Data 中的内容。添加按钮以模态方式推送第二个 View ,这使我可以将内容保存到 Core Data 中。我正在使用 NSFetchedResultsController
来填充主 VC。如果我将内容保存到 Core Data 并再次显示主视图 Controller ,我的 tableView 不会刷新其数据。我认为这是因为未调用委托(delegate)方法。知道为什么吗?
import UIKit
import CoreData
class MainTableViewController: UITableViewController, NSFetchedResultsControllerDelegate {
var managedContext: NSManagedObjectContext!
var fetchedResultsController: NSFetchedResultsController!
lazy var coreDataStack = CoreDataStack()
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
self.setToolbarItems(toolBar().cons, animated: true)
self.navigationController?.setToolbarHidden(false, animated: true)
let fetchRequest = NSFetchRequest(entityName: "CDPodcast")
let sort = NSSortDescriptor(key: "artist", ascending: true)
fetchRequest.sortDescriptors = [sort]
managedContext = coreDataStack.context
fetchedResultsController = NSFetchedResultsController(fetchRequest: fetchRequest, managedObjectContext: managedContext, sectionNameKeyPath: nil, cacheName: nil)
fetchedResultsController.delegate = self
var error: NSError? = nil
if (!fetchedResultsController.performFetch(&error)) {
println("Error: \(error?.localizedDescription)")
}
}
以下均未调用
func controller(controller: NSFetchedResultsController, didChangeSection sectionInfo: NSFetchedResultsSectionInfo, atIndex sectionIndex: Int, forChangeType type: NSFetchedResultsChangeType) {
println("change section")
}
func controllerWillChangeContent(controller: NSFetchedResultsController) {
tableView.reloadData()
println("begin updates")
}
func controllerDidChangeContent(controller: NSFetchedResultsController) {
tableView.reloadData()
println("end updates")
}
编辑:更多代码
func saveToCoreData(name: String, artist: String, summary: String, feedURL: String, artworkURL: String, date: NSDate, episodes: [MWFeedItem]) {
self.managedContext = coreDataStack.context
let podcastEntity = NSEntityDescription.entityForName("CDPodcast", inManagedObjectContext: self.managedContext)
currentPodcast = CDPodcast(entity: podcastEntity!, insertIntoManagedObjectContext: self.managedContext)
currentPodcast.name = name
currentPodcast.artist = artist
currentPodcast.summary = summary
currentPodcast.feedURL = feedURL
currentPodcast.artworkURL = artworkURL
currentPodcast.date = date
let episodesEntity = NSEntityDescription.entityForName("CDEpisode", inManagedObjectContext: self.managedContext)
for var i = 0; i < episodes.count; i++ {
let episodesToSave = CDEpisode(entity: episodesEntity!, insertIntoManagedObjectContext: self.managedContext)
var episode: AnyObject = currentPodcast.episode.mutableCopy() as! NSMutableOrderedSet
println("There are \(episodes.count) items in the episodes array")
episodesToSave.title = episodes[i].title
episodesToSave.downloadURL = episodes[i].enclosures[0].valueForKey("url") as! String
episodesToSave.showNotes = episodes[i].summary
episode.addObject(episodesToSave)
currentPodcast.episode = episode.copy() as! NSOrderedSet
}
self.coreDataStack.saveContext()
}
最佳答案
问题是我的 ManagedObjectContext 没有被正确传递。 println(context)
在 App Delegate 和 View Controller #3 之间返回了不同的内存地址。我没有找到解决此问题的正确方法,所以我只是在 View Controller 之间传递上下文。有正确的上下文修复它。
关于ios - 未调用 controllerDidChangeContent,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28798422/
您好,我现在遇到以下错误。 CoreData: error: Serious application error. An exception was caught from the delegate
我的应用程序非常简单:一个 TableViewController 显示存储在 Core Data 中的内容。添加按钮以模态方式推送第二个 View ,这使我可以将内容保存到 Core Data 中。
我目前的设置: 我打算使用 UISegmentedControl 在我想在表格 View 中显示的数据之间切换。 我一直在使用 restkit 进行与 web 服务的所有安静交互。数据存储在 core
我在实现一个非常基本的 NSFetchedResultsController 时遇到了问题。我有以下 super 简单的演示应用程序,只设置了一个 View 和一个按钮,CoreData 堆栈实现是由
我有 UITableViewController 表并使用 NSFetchedResultsController 从核心数据中获取行。我的 tableView 负责分层数据。每个行位置代表层(在零行最
我正在为 iOS 6.1 编写代码并学习如何使用 Core Data。 fetchedObjects 的文档说: “结果数组反射(reflect)了 Controller 的托管对象上下文中托管对象的
在类似的线程之前开始,但我现在知道问题出在哪里,所以我正在为您缩小范围: 我有两个 View Controller 。第一个叫做 MainCategoriesViewController,第二个是 N
我有一个包含两个托管对象上下文的应用程序: @property (nonatomic, strong) NSManagedObjectContext *managedObjectContext; @p
我正在尝试在 UITableView 中使用 NSFetchedResultsController。但是由于某些原因,当我添加一个新条目时,NSFetchedResultsControllerDele
我有一个后台线程执行后台更新,设置/覆盖几种 NSManagedObjects 上的字段。所有子类都包含一个 lastModified 属性,该属性在被后台任务处理时始终得到更新。 我的问题是,当我这
这是我的全部NSFetchedResultsControllerDelegate: //MARK: - NSFetchedResultsControllerDelegate func controll
我正在开发一个涉及可折叠部分的核心数据应用程序。 基本上,如果我跨部分移动托管对象,或者只是在其部分打开时将其删除,我会收到以下错误: 2014-04-28 19:38:44.690 uRSS[663
在 Swift 的 iOS 开发中使用 NSFetchedResultsController 和核心数据是非常奇怪的情况。 起初,FetchedResultsController 仅包含未更改部分的信
我有以下委托(delegate),我需要测试是否调用了 tableView.beginUpdates()。我正在使用 XCTest 和 Swift 3。您有任何想法或示例代码吗? extension
当我在我的 TabbarController 和 Viewcontrollers 中的两个选项卡之间切换时,这两个选项卡都包含一个 NSFetchResultsController。在我的一个 Vie
我填充并保存一个初始的NSManagedObjectContext 使用不同的 NSManagedObjectContext 设置一个 NSFetchedResultsController,它根据 b
我在我的应用程序中使用核心数据,但我注意到它有点慢,而且我遇到了一些不一致问题的崩溃,也许我管理不善,但我想传递给 SQLite 并且我找到了 FMDB 库,但我的问题是当我在数据库中进行后台更改时如
我是一名优秀的程序员,十分优秀!