如何从关系实体中进行简单的提取?迅速

时间:2015-08-21 18:02:14

标签: ios swift core-data nsfetchedresultscontroller

我在Xcode中创建了两个关系实体,我使用了Swift。我在Core Data中建立了一个简单的关系。 enter image description here

公司代码

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="header" class="style2">
    <div id="header2" class="style2">Public Vision</div>
</div>
<input id="showHideContainer" type="image" src="http://i.imgur.com/5LGqY2p.jpg?1" height="100" width="100" alt="On" ;>

附加代码

import Foundation
import CoreData

    @objc(Company)
    class Company: NSManagedObject {

        @NSManaged var nameCompany: String
        @NSManaged var additional: NSSet

    }

我写了一个代码,它将数据添加到实体中。有用。

import Foundation
import CoreData

@objc(Additional)
class Additional: NSManagedObject {

    @NSManaged var acitvityCompany: String
    @NSManaged var founded: String
    @NSManaged var company: Company

}

当我转移到显示实体数据的 @IBAction func saveData(sender: UIBarButtonItem) { var companyEntity = NSEntityDescription.insertNewObjectForEntityForName("Company", inManagedObjectContext: managedObjectContext) as! NSManagedObject var additionalEntity = NSEntityDescription.insertNewObjectForEntityForName("Additional", inManagedObjectContext: managedObjectContext) as! NSManagedObject companyEntity.setValue(nameCompanyTextField.text, forKey: "nameCompany") additionalEntity.setValue(activityTextField.text, forKey: "acitvityCompany") additionalEntity.setValue(foundedTextField.text, forKey: "founded") companyEntity.setValue(NSSet(object: additionalEntity), forKey: "additional") managedObjectContext.save(nil) var storyboard = UIStoryboard(name: "Main", bundle: NSBundle.mainBundle()) var navi = storyboard.instantiateViewControllerWithIdentifier("navi") as! UINavigationController self.presentViewController(navi, animated: true, completion: nil) // println("company \(companyEntity)") // println("additional \(additionalEntity)") } 时。如果我从Additional实体获取数据,我会收到错误。 CoreData:FATAL ERROR:节信息的持久缓存与当前配置不匹配。你非法改变了NSFetchedResultsController的获取请求,它的谓词或它的排序描述符,而没有禁用缓存或使用+ deleteCacheWithName:

如果我只从公司实体获取数据,那么效果很好。

我的UITableViewController

UITableViewController

1 个答案:

答案 0 :(得分:1)

我明白了如何制作它。

var currentDate: NSDate!

    // MARK: - NSFetchedResultsController
    var fetchedResultsController: NSFetchedResultsController!

    func fetchRequest() -> NSFetchRequest {
        let fetchRequest = NSFetchRequest(entityName: "Car")
        let sortDescriptor = NSSortDescriptor(key: "personCar", ascending: true)
        fetchRequest.predicate = NSPredicate(format: "personRelationship.datePerson contains[c] %@", currentDate)
        fetchRequest.fetchBatchSize = 50
        fetchRequest.fetchLimit = 50
        fetchRequest.sortDescriptors = [sortDescriptor]
        println(fetchRequest)
        return fetchRequest
    }