Swift에서 기본 함수 매개 변수를 정의하려고합니다. 기본적으로이 클래스 내의 참조가 사용되어야합니다 (함수 loadMyEntities(...)
). Xcode (v6 베타 4)는 Use of unresolved Identifier 'self'
을 표시합니다. self.context
대신 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
}
는하지만 그 매개 변수 사용에
내 질문 목표 ;-) 꽤 좋은 건 아니지만, 이런 식으로 핵심 데이터를 캡슐화하는 의견도 환영합니다.
왜 이전 beta4 대신 Xcode6의 최종 버전을 사용하지 않았습니까? – holex
은 새 프로젝트를 시작하기 전에 최신 버전을 다운로드했습니다. 버전 6A317을 지금 시험해보십시오. 동일한 동작입니다. – Guardian667