在Xcode中,当我创建一个新文件时扩展NSManagedObjectContext类,在这个扩展文件中添加方法,编译项目并没有问题。
的NSManagedObjectContext + BaseModel.swift
import Foundation
import CoreData
import CoreDataStack
extension NSManagedObjectContext {
public func insertObject<T: NSManagedObject>() -> T {
guard let object = NSEntityDescription.insertNewObjectForEntityForName(T.modelName(), inManagedObjectContext: self) as? T
else {
fatalError("Invalid Core Data Model")
}
return object
}
}
但是,当我在ViewController.swift中使用它时,如context.insertObject()
,编译器报告错误说:
Value of type 'NSManagedObjectContext' has no member 'insertObject'
在StackOverflow中搜索后,我找到了帖子"Using extensions in separate .swift file"。正如帖子的作者所说,当我将扩展NSManagedObjectContext
代码放在我的自定义CoreDataStack.swift中时,上述问题就消失了。但为什么?? 不应该将Apple的类扩展到单独的文件中吗?