我想在我的iOS應用程序和Android應用程序之間同步數據。 Android應用程序可以很好地從Realm中讀取,但是我的Swift程序正在掙扎,並且錯誤消息沒有很多信息。領域對象服務器:失敗asserting left.optional == right.optional(Android和iOS之間的同步數據)
我收到此錯誤信息:
2016-11-08 08:53:43.919 iOSRealm[2629:65667] Sync: Connection[1]: Session[1]: Bad changeset received: Assertion failed: left().nullable == right().nullable
我不知道這意味着什麼或如何解決它。 這就是我如何與境界對象服務器進行身份驗證自己:
private func synchronouslyLogInUser() throws {
SyncUser.authenticateWithCredential(Credential.usernamePassword(username, password: password, actions:.UseExistingAccount), authServerURL: authURL) { (user, error) in
print("sent login request")
if let user = user {
print("user was not nil")
self.setDefaultRealmConfiguration(user)
}
if let error = error where error.code == SyncError.HTTPStatusCodeError.rawValue && (error.userInfo["statusCode"] as? Int) == 400 {
print("invalid user and pass")
} else {
print(error)
}
}
}
private func setDefaultRealmConfiguration(user: SyncUser) {
Realm.Configuration.defaultConfiguration = Realm.Configuration(syncConfiguration: (user, realmURL), objectTypes: [Weather.self, Wind.self])
Realm.Configuration.defaultConfiguration.deleteRealmIfMigrationNeeded = true
realm = try! Realm()
}
我看到正在打印輸出到控制檯,所以我知道的登錄嘗試是成功的。我不認爲這是不匹配的數據庫的問題,因爲我將deleteRealmIfMigrationNeeded
標誌設置爲true
。
這個錯誤信息是什麼意思,我該如何解決?
適當的對象領域服務器日誌可以在這裏找到:http://pastebin.com/raw/J9mU4H0u - 我非常抱歉的離線鏈接,但它是一個很長的日誌文件。
我的雨燕車型如下:
class Weather : Object {
dynamic var id = 0
dynamic var date = ""
dynamic var forecast = ""
dynamic var humidity = ""
dynamic var wind: Wind!
override class func primaryKey() -> String? {
return "id"
}
}
class Wind: Object {
dynamic var direction = ""
dynamic var speed = ""
}
Android機型:提前
public class Weather extends RealmObject {
@PrimaryKey
public int id;
public String date;
public String forecast;
public String humidity;
public Wind wind;
}
public class Wind extends RealmObject {
public String direction;
public String speed;
}
謝謝!
奈斯利找到了!我在關於與Realm Mobile Platform交叉兼容性的內部討論中強調了這一點,我們將在未來嘗試使這一點更加明顯。感謝分享! :) – TiM