2017-03-21 9 views
0

방금 ​​Realm 데이터베이스를 사용하여 간단한 Todo App을 만들었습니다. Mac Apple Store에서 다운로드 한 Realm Browser 2.1.6을 사용하여 데이터를 유지했습니다. Realm Browser를 사용하면 기존 레코드의 값을 편집하고 Todo App 화면에 표시 할 수 있지만 (Command +)로 추가 한 새 레코드는 시뮬레이터의 화면에 표시 할 수 없습니다. Xcode 8.2를 사용하고 있으며 3을 신속하게 처리하고 있습니다. 내가 누락되었거나 버그입니까?Realm Browser를 사용하여 영역 데이터베이스에 새 레코드를 추가 할 수 없음 Mac Apple Store에서 다운로드했습니다.

감사합니다.

내 안부,

카모

답변

0

당신이 영역 브라우저에 추가 한 그 새로운 객체가 확실히 지속 한 경우 (즉, 당신은 영역 파일을 닫을 수 다시 열어, 그들은 ' 여전히 거기에 있습니다), 그러면 Realm Browser가 데이터를 변경 한 시점을 감지하고 UI 업데이트를 트리거하기 위해 앱에 알림 블록을 추가해야하는 것처럼 들립니다.

이러한 레코드를 테이블 또는 컬렉션보기로 표시하는 경우 Realm's collection change notifications을 사용하여 새 개체가 추가 된시기를 감지 할 수 있습니다.

class ViewController: UITableViewController { 
    var notificationToken: NotificationToken? = nil 

    override func viewDidLoad() { 
    super.viewDidLoad() 
    let realm = try! Realm() 
    let results = realm.objects(Person.self).filter("age > 5") 

    // Observe Results Notifications 
    notificationToken = results.addNotificationBlock { [weak self] (changes: RealmCollectionChange) in 
     guard let tableView = self?.tableView else { return } 
     switch changes { 
     case .initial: 
     // Results are now populated and can be accessed without blocking the UI 
     tableView.reloadData() 
     break 
     case .update(_, let deletions, let insertions, let modifications): 
     // Query results have changed, so apply them to the UITableView 
     tableView.beginUpdates() 
     tableView.insertRows(at: insertions.map({ IndexPath(row: $0, section: 0) }), 
          with: .automatic) 
     tableView.deleteRows(at: deletions.map({ IndexPath(row: $0, section: 0)}), 
          with: .automatic) 
     tableView.reloadRows(at: modifications.map({ IndexPath(row: $0, section: 0) }), 
          with: .automatic) 
     tableView.endUpdates() 
     break 
     case .error(let error): 
     // An error occurred while opening the Realm file on the background worker thread 
     fatalError("\(error)") 
     break 
     } 
    } 
    } 

    deinit { 
    notificationToken?.stop() 
    } 
} 

그렇지 않은 경우 다른 유형의 영역 알림을 사용해야 할 수 있습니다.

어쨌든 앱의 UI가 업데이트되지 않아도 영역 개체가 생방송되며 값이 변경되면 자동으로 업데이트됩니다. 앱에 중단 점을 설정하고 객체를 직접 검사하여 데이터가 전달되는지 확인할 수 있어야합니다. 행운을 빕니다!

+0

안녕하세요. Mr. Tii, 고객님의 의견에 진심으로 감사드립니다. 나에게서 디버깅 방법을 배우는 것이 너무 좋다. 다시 설치 한 후 문제가 해결되었습니다. 렐름 브라우저가 너무 멋지다! – Kamogawa