0
  1. 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)")
    }}
    
  2. 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,它们就不会显示。它们仅在重新启动后出现。

4

0 回答 0