swift – Realm对象服务器:声明left.optional == right.optiona
发布时间:2020-12-14 04:42:50 所属栏目:百科 来源:网络整理
导读:我正在尝试在iOS应用程序和 Android应用程序之间同步数据. Android应用程序可以从Realm中读取就好了,但是我的Swift程序正在挣扎,并且错误信息不是很有用. 我收到此错误消息: 2016-11-08 08:53:43.919 iOSRealm[2629:65667] Sync: Connection[1]: Session[1]
我正在尝试在iOS应用程序和
Android应用程序之间同步数据. Android应用程序可以从Realm中读取就好了,但是我的Swift程序正在挣扎,并且错误信息不是很有用.
我收到此错误消息: 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. 此错误消息的含义是什么?如何解决? 可以在此处找到相应的Object Realm Server日志:http://pastebin.com/raw/J9mU4H0u – 我对异地链接表示歉意,但这是一个很长的日志文件. 我的Swift模型如下: 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; } 提前致谢! 解决方法
弄清楚发生了什么.显然,根据定义,Java String可以为空(或者如果你愿意,可以是可选的).在Swift中,我告诉我的模型映射到非可选字符串.这就是为什么错误消息说它无法断言left.optional == right.optional.
所以,我必须做的就是让我的swift模型中的每个String都可选. 看这里: class Weather : Object { dynamic var id = 0 dynamic var date: String? dynamic var forecast: String? dynamic var humidity: String? dynamic var wind: Wind? override class func primaryKey() -> String? { return "id" } } class Wind: Object { dynamic var direction: String? dynamic var speed: String? } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |