Я работаю над своим первым приложением iOS, используя быстрый. Я пытаюсь загрузить значение из одного viewController в другое. Я использую протокол, но я не могу заставить его работать правильно. Я искал вокруг переполнения стека и в другом месте, но не смог найти ответ, который работает в моей ситуации.Swift Delegate и необязательно
Вот VC я пытаюсь вытащить значение из:
protocol AddHelperVCDelegate {
func didFinishAddingHelper(controller: AddHelperViewController)
}
class AddHelperViewController: UIViewController, UITableViewDataSource, UITableViewDelegate, NSFetchedResultsControllerDelegate {
@IBOutlet weak var tableView: UITableView!
let managedObjectContext = (UIApplication.sharedApplication().delegate as AppDelegate).managedObjectContext!
var fetchedResultsController:NSFetchedResultsController = NSFetchedResultsController()
var delegate:AddHelperVCDelegate! = nil
var helperBonus:NSNumber = 0
override func viewDidLoad() {
super.viewDidLoad()
fetchedResultsController = getFetchResultsController()
fetchedResultsController.delegate = self
fetchedResultsController.performFetch(nil)
// Do any additional setup after loading the view.
}
}
А вот где я пытаюсь переместить значение (и вид) обратно протекающей ВК.
// UITableViewDelegate
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
var indexPathForRow = tableView.indexPathForSelectedRow()
println("indexPath for selected row is: \(indexPathForRow)")
let thisUser = fetchedResultsController.objectAtIndexPath(indexPath) as UserModel
var cell:UserCell = tableView.dequeueReusableCellWithIdentifier("helperCell") as UserCell
helperBonus = thisUser.effectiveCombat
helperBonus = Int(helperBonus)
println("helperBonus is: \(helperBonus)")
delegate.didFinishAddingHelper(self)
}
Если я делегат необязательный (delegate?.didFinishAddingHelper(self)
), то ничего не происходит. Если у меня нет, я получаю сбой с сообщением об ошибке:
indexPath for selected row is: Optional(<NSIndexPath: 0xc000000000018016> {length = 2, path = 0 - 3})
helperBonus is: 0
fatal error: unexpectedly found nil while unwrapping an Optional value
Теперь, я знаю, я объявляю делегат как ноль, но это предел моего понимания того, что происходит. Мне нужно добавить значение в протекающей ВК в этой функции:
func didFinishAddingHelper(controller: AddHelperViewController) {
self.effectiveCombat = Int(controller.helperBonus)
controller.navigationController?.popViewControllerAnimated(true)
}
var delegate: AddHelperVCDelegate? let addHelperVC = AddHelperViewController() addHelperVC.delegate = self // эта строка бросает ошибку «Ожидаемое объявление»? Разве я не объявлял об этом на строчке? https: // github.com/omegabytes/MunchkinCompanion –