RootVC.swift
private let managedObjectContext = (UIApplication.sharedApplication().delegate as! AppDelegate).managedObjectContext private var fetchRecordRequestController: NSFetchedResultsController = NSFetchedResultsController() override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view, typically from a nib. // Initialize fetch request fetchRecordRequestController = NSFetchedResultsController(fetchRequest: fetchRecordRequest(), managedObjectContext: managedObjectContext, sectionNameKeyPath: nil, cacheName: nil) fetchRecordRequestController.delegate = self // Fetch data from object do { try fetchRecordRequestController.performFetch() } catch let fetchError as NSError { print("(RootVC)fetchError: \(fetchError), \(fetchError.userInfo)") }}
AddRuleVC.swift
// 初始化 managedObjectContext 以从输入创建一个新对象
private var managedObjectContext = (UIApplication.sharedApplication().delegate as! AppDelegate).managedObjectContext
// 将提取的值保存到 CoreData 对象的方法
func saveValues() {
// 设置,保存在私有队列中
let privateManagedObjectContext = NSManagedObjectContext(concurrencyType: .PrivateQueueConcurrencyType)
privateManagedObjectContext.persistentStoreCoordinator = managedObjectContext.persistentStoreCoordinator
// 初始化实体描述
let RuleDescription = NSEntityDescription.entityForName("Rule",inManagedObjectContext:privateManagedObjectContext)
let rule = Rule(entity: RuleDescription!, insertIntoManagedObjectContext: privateManagedObjectContext)
// 执行块
privateManagedObjectContext.performBlock { () -> Void in
// 从临时变量中设置对象值
rule.music = musicTemp! as MPMediaItemCollection
print("musicTemp = \(musicTemp!.count)=========>saveValues")
// Save the object
do {
//print(NSStringFromClass((self.rule?.classForCoder)!))
try rule.managedObjectContext?.save()
} catch let saveError as NSError {
print("(AddRuleViewController)saveError: \(saveError), \(saveError.userInfo)")
}
}
}
我的 RootVC 用于获取使用 AddRuleVC 存储的数据。我可以保存尽可能多的规则,但是一旦 AddRuleVC 回到 RootVC,它们就不会显示。它们仅在重新启动后出现。