2016-08-15 5 views
2

Я новичок в Swift и пытался понять ленивую переменную. У меня есть опыт работы на Objective-C, но быстрый сбивает меня с ума.Как получить доступ к переменной экземпляра в объявлении ленивой переменной swift

У меня есть базовая модель данных. Где Person ---- пробы ---->Account и Account ---- принадлежит для ->Person. holds и belongsTo - это отношения.

Person будет отображаться список, а при нажатии на человека все связанные с ним учетные записи должны быть перечислены в TableView. Я использую NSFetchedResultsController, потому что учетная запись может быть добавлена ​​«на лету», и я хочу немедленно отразить изменения, используя делегат NSFetchedResultsController.

Теперь я передал объект испытанного человека в свой класс.

class DetailViewController : ViewController{ 
    var foundPerson : Person? 

    lazy var accountFetchedResultsController : NSFetchedResultsController = { 

     let fetchRequest = NSFetchRequest(entityName: "AccountInfo") 
     fetchRequest.predicate = NSPredicate(format: "belongsTo = %@", foundPerson!) 
     fetchRequest.sortDescriptors = [NSSortDescriptor(key: "accountnumber", ascending: true)] 
     let appdelegate = UIApplication.sharedApplication().delegate as? AppDelegate 
     var fetchedResultsController = NSFetchedResultsController(fetchRequest: fetchRequest, managedObjectContext: appdelegate!.managedObjectContext, sectionNameKeyPath: nil, cacheName: nil) 
     return fetchedResultsController 
    }() 

    //other view controller methods 
} 

Когда я пытаюсь скомпилировать это дает ошибку о том, что

«foundPerson члены экземпляра не могут быть использованы на типе DetailViewController»

Я не мог многое из этого понять ошибка. Что именно он пытается передать? Какая ошибка? Заранее спасибо

ответ

4

Попробуйте добавить самостоятельно, прежде чем foundPerson

 fetchRequest.predicate = NSPredicate(format: "belongsTo = %@", self.foundPerson!) 
+0

Бинго дружище :) Получил ответ :) Я собирался удалить мой вопрос и увидел ур ответ :) Спасибо :) Я принимаю ур ответ через 8 минут (Не могу принять ответ, поскольку я его проголосовал именно сейчас) –

Смежные вопросы