Boa noite! 
Estou com um pequeno problema, ao fazer o fetchedObjects ele retorna nill, já analisei todo o código e não consigo encontrar o erro. 
Obs - 1: Meus objeto Product é um pouco complexo eu estou usando só dois parâmetros para testar, mas deixei todos como opcionais
Obs - 2: O app não encerra e nem lança erro, apenas retorna nill
//
//  ProductService.swift
//  Tarv
//
//  Created by Ramires Moreira on 6/15/18.
//  Copyright © 2018 Adacemy. All rights reserved.
//
import UIKit
import CoreData
class ProductService {
     var context : NSManagedObjectContext {
        let appDelegate = UIApplication.shared.delegate as! AppDelegate
        return appDelegate.persistentContainer.viewContext
    }
    var fetchResult : NSFetchedResultsController<Product> {
        let fetchRequest:NSFetchRequest<Product> = Product.fetchRequest()
        let sort = NSSortDescriptor(key: "name", ascending: true)
        fetchRequest.sortDescriptors = [sort]
        let controller = NSFetchedResultsController(fetchRequest: fetchRequest, managedObjectContext: context, sectionNameKeyPath: nil, cacheName: nil)
        return controller
    }
     func getProducts( completion : @escaping ( [Product]? )->Void ){
        for _ in 0...5 {
            save()
        }
        do {
            try fetchResult.performFetch()
            if let list = fetchResult.fetchedObjects { // retorna nill
                completion(list)
            }else{
                completion(nil)
            }
        } catch {
            print(error.localizedDescription)
            completion(nil)
        }
    }
    @discardableResult
    func save() -> Bool {
        let p = Product(context: context)
        p.id = 1
        p.name = "Blusa"
        p.price = 24.89
        do {
            context.insert(p)
           try context.save()
            return true
        }catch{
            print(error)
            return false
        }
    }
} 
            