2016-12-28 2 views
0

영역 객체 서버에 다른 IP가있는 경우 문제가 있습니다. 응용 프로그램은 자격 증명을 통해 로그인 할 수 있지만 그 후에는 데이터베이스가 해당 IP에 바로 위치하며 영역 브라우저가 액세스 할 수 있지만 빈 데이터가 반환됩니다. 사실, 나는 realm 객체 서버에 하나의 계정 만 사용하고 username과 password를 가진 사용자 테이블을 생성하여 Credential을 서버에 연결 한 후에 화면의 사용자 이름과 암호를 읽고 데이터베이스의 정보를 확인합니다. 영역 객체 서버의 IP 주소 변경

는 연결 영역에 개체 서버 기능 : SyncUser하여 로그인 후 테이블에서

class func login(username: String, password: String, action: AuthenticationActions, completionHandler: @escaping()->()) { 
    let serverURL = NSURL(string: realmIP)! 
    let credential = Credential.usernamePassword(username: username, password: password, actions: [action]) 
    SyncUser.authenticate(with: credential, server: serverURL as URL) { user, error in 
     if let user = user { 
      syncUser = user 
      let syncServerURL = URL(string: realmURL)! 
      let config = Realm.Configuration(syncConfiguration: (user, syncServerURL)) 
      realm = try! Realm(configuration: config) 
     } else if error != nil { 

     } 
     completionHandler() 
    } 
} 

쿼리 : 내가 의해 함수를 여러 번 호출 할 수 있도록

class func loginLocal(employee: String) -> Bool{ 
    let predicate = NSPredicate(format: "employee = %@", employee) 
    if (realm != nil) { 
     let user = realm?.objects(MyUser.self).filter(predicate) 
     if ((user?.count)! > 0) { 
      return true 
     } 
    } 
    return false 
} 

이 솔루션은 이상한 것 같다 내 로그인 버튼을 누르면 서버로 연결됩니다.

이것은이 영역에서 많은 경험이 없으므로 영역과 영역 서버를 사용하는 첫 번째 응용 프로그램입니다.

답변

1

로그인 한 후 로그인 한 영역을 어떻게 처리하는지에 대한 자세한 정보가 필요할 수 있지만 표시된 코드에서 실수로 로컬 영역 버전에 액세스 한 것처럼 보입니다. 하나를 동기화했다.

일단 로그인하면 Realm 인스턴스를 생성 할 때마다 동일한 Configuration 개체를 사용해야합니다. 이 블록은 백그라운드 스레드에서 발생하므로 다른 곳에서는 사용할 수 없으므로 로그인 완료 블록 내에 realm 인스턴스를 만들고 저장하는 것은 좋지 않습니다. 앱이 항상 온라인 상태 인 경우

, 그것은 단순히 응용 프로그램의 기본 영역으로 동기화 구성을 설정하는 것이 더 쉽습니다 : 당신이 전역 객체의 어떤 종류의 Configuration을 절약 할 수 있습니다, 그렇지 않으면

SyncUser.authenticate(with: credential, server: serverURL as URL) { user, error in 
    if let user = user { 
     syncUser = user 
     let syncServerURL = URL(string: realmURL)! 
     let config = Realm.Configuration(syncConfiguration: (user, syncServerURL)) 
     Realm.Configuration.defaultConfiguration = config 
    } 
    completionHandler() 
} 

또는 Realm 인스턴스를 만들어야 할 때마다 다시 만드십시오. 기억해야 할 중요한 점은 Realm 인스턴스가 성공적으로 로그인 한 사용자와 함께 Configuration 객체를 사용하고 있는지 확인해야합니다. 그렇지 않으면 일반 공백의 로컬 영역을 사용하도록 기본 설정됩니다.