我想在Swift中定义一个默认函数参数。默认情况下,应使用此类中的引用(功能loadMyEntities(...)
)。 Xcode(v6 Beta 4)显示Use of unresolved Identifier 'self'
。仅使用context
而不是self.context
会导致错误'DB.Type' does not have a member named 'context'
。我如何处理这个问题,使用“参考后的值”作为默认参数。Swift:类参数作为默认函数参数
在我的具体情况下,核心数据应该在额外创建的NSManagedObjectContext中加载实体,否则应该在默认情况下加载实体。
class DB {
var appDelegate: AppDelegate
var context: NSManagedObjectContext
var persistenceCoordinater: NSPersistentStoreCoordinator
init() {
self.appDelegate = UIApplication.sharedApplication().delegate as AppDelegate
self.context = appDelegate.managedObjectContext!
self.persistenceCoordinater = context.persistentStoreCoordinator
}
// !!! Here's the point where I want to use the DB objects context as default !!!
func loadMyEntities(context: NSManagedObjectContext = self.context) -> [MyEntity] {
// loading entities
}
// This function can be used
func createContext() -> NSManagedObjectContext {
var newContext = NSManagedObjectContext()
newContext.persistentStoreCoordinator = self.persistenceCoordinater
return newContext
}
}
一种解决方法会被重复定义的功能,一旦与参数,一旦没有,和代表从一个没有给定的上下文。
func loadMyEntities() -> [MyEntity] {
return loadMyEntities(self.context)
}
func loadMyEntities(context: NSManagedObjectContext) -> [MyEntity] {
// loading entities
}
但是这还不是相当不错;-)
我的问题上的目标参数的用法是否迅速,但以这种方式封装的核心数据的意见,也欢迎。
为什么你不使用最终版本的Xcode6而不是旧的beta4? – holex 2014-10-01 13:10:27
在开始我的新项目之前下载了最新的版本。现在试用版本6A317,同样的行为。 – Guardian667 2014-10-01 13:26:07