2017-01-01 3 views
0

두 개의 정적 셀 사용자 및 위치가있는 ConfigureTableViewController가 활성화 된 tableview가 있습니다. 사용자 tableview 셀은 usersSegue를 통해 ListUserTableViewController에 연결됩니다.CoreData 및 대리자를 통해 정적 tableView 셀간에 변수 전달

protocol UserSelectionDelegate{ 
     func userDidSelectUser(userIdentifier:NSString) 
    } 

내가 ListUserTableViewController에서 사용자를 선택하고 대리인 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 
      } 
     } 
    } 

} 
} 

을 구현함으로써 ConfigureTableViewController에 건네 위치에있는 tableview 셀 SEGUE locationsSegue

ListUserTableViewController 통해 LocationTableViewController에 연결되어 프로토콜을 가지고 지금까지 그렇게 좋은 ..

그러나 지금, 나는 내가 사용자 이름을 가지고,하지만 난 LocationTableViewController에 ConfigureTableViewController을 떠나 갈 때, 나는 잃을 ConfigureTableViewController에 ListUserTableViewController에서 전환으로 locationsSegue

를 DB에서 가져온 사용자 이름을 가지고 SEGUE를 통해 LocationTableViewController하기 위해 보내려면 fullName의 범위

어떻게 든 계산 된 fullName 값을 일부 영구 저장소에 저장해야하므로 CoreData의 테이블에 저장해야합니다. 나는 이것을 피하고 싶다. 그것은 많은 일로 보인다.

일종의 델리게이트 체인을 사용하여 LocationTableViewController가 ConfigureTableViewController에 정의 된 델리게이트를 구현하고 이미 구현 된 다른 UserSelectionDelegate의 데이터를 가져오고 그 범위에 fullName을 가질 수 있습니다.

이 문제를 해결하는 방법을 알려주십시오.

답변

0

문제 문을 혼동 :

난 당신이 User 객체에 대한 변경 사항을 저장하고 다음 뷰 컨트롤러에서 이러한 변경 사항을 검색해야 fullName의

의 범위를 잃게됩니다. 다음보기 컨트롤러가 동일한 NSManagedObjectContext을 사용하는 경우 동일한 User 개체를 전달할 수도 있습니다.

다음에는 전체 이름에 대한 모든 데이터가 있습니다.

이것은 일반적으로 User 클래스의 사용자 지정 메서드로 구현되며 해당 성과 이름을 검사하고 올바르게 형식이 지정된 문자열을 반환합니다.

+0

사용자 ID를 함께 전달하려고하므로 Db에서 사용자 이름을 얻을 수 있습니다. 귀하의 대답은 부분적인 해결책을 제시합니다. 그러나 나는 그것을 받아 들일 것이다. – vrao