2017-01-01 5 views
0

У меня есть табличное представление ConfigureTableViewController с двумя статическими ячейками «Пользователи и местоположения». Пользователи tableview cell подключены к ListUserTableViewController через usersSegue. Местоположение TableView ячейка соединена с LocationTableViewController через SEGUE locationsSegueПередача переменных через статические ячейки tableView через CoreData и делегаты

ListUserTableViewController имеет протокол:

protocol UserSelectionDelegate{ 
     func userDidSelectUser(userIdentifier:NSString) 
    } 

я выбираю пользователя из ListUserTableViewController и передать его в ConfigureTableViewController, путем реализации делегата UserSelectionDelegate

class ConfigureTableViewController: UITableViewController, UserSelectionDelegate { 
    … 
    … 

    // function pulls user’s fullName from Core Data table based on userIdentifier 
    func userDidSelectUser(userIdentifier : NSString) { 
    var fetchedResults: [User] = [] 

    let context = (UIApplication.shared.delegate as AppDelegate).persistentContainer.viewContext 

    userIdentifierString = userIdentifier 

    do { 

     fetchedResults = try context.fetch(User.fetchRequest()) 
    } 
    catch { 
     print ("fetch task failed") 
    } 
    if fetchedResults.count > 0 { 

     for user in fetchedResults{ 
      let aUser:User = user 
      if (aUser.uniqueId! == userIdentifierString as String) { 
       let fullName = aUser.firstName! + " " + aUser.lastName! 
       print("selected user full name: " + (fullName as String)) 
      } 
      else { 
       continue 
      } 
     } 
    } 

} 
} 

пока что так хорошо ..

Но теперь я хочу взять имя пользователя извлекается из БД и отправить в LocationTableViewController через Segue locationsSegue

Как я перехода от ListUserTableViewController к ConfigureTableViewController У меня есть имя пользователя, но когда я оставляю ConfigureTableViewController и перейти к LocationTableViewController, я теряю область fullName.

Я должен как-то сохранить это значение вычисленного fullName в каком-то постоянном хранилище, поэтому я должен положить его в таблицу в CoreData. Я хочу избежать этого, что, кажется, много работы.

Могу ли я использовать цепочку делегатов, чтобы LocationTableViewController мог реализовать делегат, определенный в ConfigureTableViewController, и вытащить данные из другого UserSelectionDelegate, который уже был реализован, и имеет полное имя в своей области.

Пожалуйста, сообщите, как решить эту проблему?

ответ

0

Смешение постановка задачи:

Я теряю сферу FULLNAME

Вы должны сохранить изменения в User объекта и получить эти изменения в следующем контроллере представления. Если следующий контроллер просмотра использует тот же NSManagedObjectContext, вы также можете просто передать тот же объект User.

Затем у вас есть все данные для полного имени.

Это обычно реализуется как пользовательский метод класса User, который проверяет свое собственное имя и фамилию и возвращает правильно отформатированную строку.

+0

Я пытаюсь передать идентификатор пользователя вместе с ним, поэтому я могу получить имя пользователя из Db. Ваш ответ дает частичное решение. Но я соглашусь. – vrao

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

  • Нет связанных вопросов^_^