我正在尝试在iOS应用程序和Android应用程序之间同步数据。 Android应用程序可以从Realm读取就好了,但是我的Swift程序正在挣扎,而且错误信息的信息量不大。
我收到此错误消息:
for (int i = 0; i < count; i++) chart1.Series[0].Points.AddXY(i, someYValue);
我不知道它意味着什么或如何解决它。 这就是我使用Realm Object服务器验证自己的方式:
private void chart1_MouseMove(object sender, MouseEventArgs e)
{
ChartArea ca = chart1.ChartAreas[0];
Series S = chart1.Series[0];
RectangleF rf = InnerPlotPositionClientRectangle(chart1, ca);
float px = (float)( (e.X - rf.X) * S.Points.Count / rf.Width );
int p0 = (int)px; // previous point
int p1 = p0 + 1; // next point
if (p0 >= 0 && p0 < S.Points.Count)
Console.WriteLine( "DataPoint # " + p0 + " has a y-value of " +
S.Points[p0].YValues[0].ToString("0.00"));
//..
}
我看到输出被打印到控制台,所以我知道登录尝试是成功的。我不认为这是一个不匹配的数据库的问题,因为我将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()
}
。
此错误消息的含义是什么以及如何解决?
可以在此处找到相应的对象域服务器日志:http://pastebin.com/raw/J9mU4H0u - 我对场外链接表示歉意,但这是一个很长的日志文件。
我的Swift模型如下:
deleteRealmIfMigrationNeeded
Android模特:
true
提前致谢!
答案 0 :(得分:6)
弄清楚发生了什么。显然,根据定义,Java String
可以为空(或Optional
,如果您愿意)。在Swift中,我告诉我的模型映射到非Optional
字符串。这就是为什么错误消息说它无法断言left.optional == right.optional
。
所以,我必须做的就是在我的快速模型中String
制作每个optional
。
见这里:
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?
}