J'écris un programme qui implique des données de base. J'ai créé une variable de classe pour mon contexte et entité et ai mon code écrit comme ceci:Erreur de chargement de chargement paresseux
class PersistencyManager {
var context : NSManagedObjectContext{
let appDelegate = UIApplication.sharedApplication().delegate as! AppDelegate
let localContext = appDelegate.managedObjectContext
return localContext
}
var userEntity : NSEntityDescription {
let entity = NSEntityDescription.entityForName(EntityNames.User, inManagedObjectContext: context)
return entity!
}
struct EntityNames {
private static let User = "User"
private static let Category = "Category"
}
}
Tout est si fonctionne bien bien, mais ce que je veux faire est de « paresseux » ly charge userEntity
Comme ceci:
lazy var userEntity : NSEntityDescription = {
let entity = NSEntityDescription.entityForName(EntityNames.User, inManagedObjectContext: context)
return entity!
}()
Mais quand je le fais, je reçois une erreur: « Dans Le membre de l'instance 'contexte' ne peut pas être utilisé sur le type 'Gestionnaire de la persistance' "
Qu'est-ce que je fais mal? Comment puis-je atteindre mon objectif?
Merci!
La syntaxe '= {...}()' est utilisée pour définir (puis exécuter) un bloc de code pour, dans ce cas, une séquence d'initialisation complexe. –
@DavidBerry Merci, vous avez raison - pensait à un problème différent. Mise à jour ma réponse –
Je l'ai maintenant. Le problème est que le bloc de code anonyme n'accède pas automatiquement aux variables d'instance sans spécifier de self, et non que le message d'erreur donne un indice à cela. –