'<…> is not a valid NSFetchRequest.'

2020-05-02 16:51发布

问题:

I am using a custom source expression

NSExpression(format: "FETCH(FUNCTION($manager, \"customFetchRequestForSourceEntityNamed:predicateString:\" , \"\(mapping.sourceEntityName!)\", \"TRUEPREDICATE\"), $manager.sourceContext, NO)") 

for mapping model.

The fetch is being executed normally within the custom method, but exception '<...> is not a valid NSFetchRequest.' is thrown somewhere later inside the NSMigrationManager.migrateStore() method.

Any clues?

回答1:

The expected result type of this method is NSFetchRequest, not what the fetch returns.

The signature would be -

extension NSMigrationManager {

    @objc func customFetchRequest(forSourceEntityNamed entityName: String, predicateString: String) -> NSFetchRequest<NSFetchRequestResult> {