Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/218.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
领域Android insertOrUpdate未更新_Android_Realm - Fatal编程技术网

领域Android insertOrUpdate未更新

领域Android insertOrUpdate未更新,android,realm,Android,Realm,api响应(www.railwayapi.com/api/#站间列车)不包含任何PrimaryKey字段(api不在我的控制之下),因此我创建了另一个类并设置PK和对它的响应。 我在StackOverflow上问了所有类似的问题,并做了相应的回答。但数据(通过改型获取)仍在重复插入领域,而不是更新。我如何解决这个问题 这就是我将数据保存到领域的方式:(已编辑) 由于SearchResultsResponse没有主键,您将获得重复 基于您正在使用的API { "response_code"

api响应(www.railwayapi.com/api/#站间列车)不包含任何PrimaryKey字段(api不在我的控制之下),因此我创建了另一个类并设置PK和对它的响应。 我在StackOverflow上问了所有类似的问题,并做了相应的回答。但数据(通过改型获取)仍在重复插入领域,而不是更新。我如何解决这个问题

这就是我将数据保存到领域的方式:(已编辑)


由于
SearchResultsResponse
没有主键,您将获得重复

基于您正在使用的API

{
    "response_code": 200,
    "error": "",
    "position": "Train has reached Destination and late by 5 minutes.",
    "train_number": "12046",
    "route": [
        {
            "no": 1,
            "station_": {
                "name": "CHANDIGARH",
                "code": "CDG"
            },
            "has_arrived": false,
            "has_departed": true,
            "day": 0,
            "distance": 0,
            "scharr": "Source",
            "schdep": "12:00",
            "actarr": "00:00",
            "actdep": "12:00",
            "scharr_date": "19 Nov 2015",
            "actarr_date": "19 Nov 2015",
            "latemin": 0
        },
        {
            "no": 2,
            "station_": {
                "name": "AMBALA CANT JN",
                "code": "UMB"
            },
            "has_arrived": true,
            "has_departed": true,
            "day": 0,
            "distance": 67,
            "scharr": "12:40",
            "schdep": "12:42",
            "actarr": "12:40",
            "actdep": "12:42",
            "scharr_date": "19 Nov 2015",
            "actarr_date": "19 Nov 2015",
            "latemin": 0
        },
        {
            "no": 3,
            "station_": {
                "name": "NEW DELHI",
                "code": "NDLS"
            },
            "has_arrived": true,
            "has_departed": false,
            "day": 0,
            "distance": 265,
            "scharr": "15:25",
            "schdep": "Destination",
            "actarr": "15:30",
            "actdep": "00:00",
            "scharr_date": "19 Nov 2015",
            "actarr_date": "19 Nov 2015",
            "latemin": 5
        }
    ]
}
在我看来,您应该构建以下RealmObject:

public class TrainRoute extends RealmObject {
    @PrimaryKey
    private String key; // train_number + station_code + scharr_date + scharr

    private long trainNumber;
    private int no;
    private String stationName;
    private String stationCode;
    private boolean hasArrived;
    private boolean hasDeparted;
    private int day;
    private int distance;
    private String scharr;
    private String schdep;
    private String actarr;
    private String actdep;
    private String scharrDateText;
    private String actarrDateText;
    private Date scharrDate;
    private Date actarrDate;
    private int latemin;

    // getter setter
}

之后,您的主键应该是特定的和相同的,并且它们不应该相互覆盖。

您会得到重复,因为
SearchResultsResponse
没有主键

基于您正在使用的API

{
    "response_code": 200,
    "error": "",
    "position": "Train has reached Destination and late by 5 minutes.",
    "train_number": "12046",
    "route": [
        {
            "no": 1,
            "station_": {
                "name": "CHANDIGARH",
                "code": "CDG"
            },
            "has_arrived": false,
            "has_departed": true,
            "day": 0,
            "distance": 0,
            "scharr": "Source",
            "schdep": "12:00",
            "actarr": "00:00",
            "actdep": "12:00",
            "scharr_date": "19 Nov 2015",
            "actarr_date": "19 Nov 2015",
            "latemin": 0
        },
        {
            "no": 2,
            "station_": {
                "name": "AMBALA CANT JN",
                "code": "UMB"
            },
            "has_arrived": true,
            "has_departed": true,
            "day": 0,
            "distance": 67,
            "scharr": "12:40",
            "schdep": "12:42",
            "actarr": "12:40",
            "actdep": "12:42",
            "scharr_date": "19 Nov 2015",
            "actarr_date": "19 Nov 2015",
            "latemin": 0
        },
        {
            "no": 3,
            "station_": {
                "name": "NEW DELHI",
                "code": "NDLS"
            },
            "has_arrived": true,
            "has_departed": false,
            "day": 0,
            "distance": 265,
            "scharr": "15:25",
            "schdep": "Destination",
            "actarr": "15:30",
            "actdep": "00:00",
            "scharr_date": "19 Nov 2015",
            "actarr_date": "19 Nov 2015",
            "latemin": 5
        }
    ]
}
在我看来,您应该构建以下RealmObject:

public class TrainRoute extends RealmObject {
    @PrimaryKey
    private String key; // train_number + station_code + scharr_date + scharr

    private long trainNumber;
    private int no;
    private String stationName;
    private String stationCode;
    private boolean hasArrived;
    private boolean hasDeparted;
    private int day;
    private int distance;
    private String scharr;
    private String schdep;
    private String actarr;
    private String actdep;
    private String scharrDateText;
    private String actarrDateText;
    private Date scharrDate;
    private Date actarrDate;
    private int latemin;

    // getter setter
}


之后,您的主键应该是特定的、相同的,并且它们不应该相互覆盖。

不应该
wpk.setPk(“from+to”)
是'wpk.setPk(from+to);`?您操作了
jsonResponse
,但插入了一个完全无关的对象<代码>领域.insertOrUpdate(wpk)@Christian Melchior粘贴在这里是个错误…我现在已经更新了。。。实际代码是realm.insertOrUpdate(jsonResponse)。现在请看一看。如果你用这个创建一个小样本项目,可能会更好。您的代码看起来不错,但是如果
jsonResponse.setKey(SSC+DSC+DATE)如果无法正常工作,您将获得重复的对象。从粘贴的代码中,不可能看到如何检索这些值。好的。。我将很快在这里发布项目链接。。顺便说一句,jsonResponse.setKey(SSC+DSC+日期);由EpicPandaForce提供建议,从以下评论中可以看出。我的方法是将response对象和另一个PK对象设置为一个附加类,然后保存在Realm中。但这也没有成功。我甚至试过复制或更新。如果我不能控制api格式,请解释如何设置主键而不重复?wpk.setPk(“from+to”)不应该是'wpk.setPk(from+to);'?您操作了
jsonResponse
,但插入了一个完全无关的对象<代码>领域.insertOrUpdate(wpk)@Christian Melchior粘贴在这里是个错误…我现在已经更新了。。。实际代码是realm.insertOrUpdate(jsonResponse)。现在请看一看。如果你用这个创建一个小样本项目,可能会更好。您的代码看起来不错,但是如果
jsonResponse.setKey(SSC+DSC+DATE)如果无法正常工作,您将获得重复的对象。从粘贴的代码中,不可能看到如何检索这些值。好的。。我将很快在这里发布项目链接。。顺便说一句,jsonResponse.setKey(SSC+DSC+日期);由EpicPandaForce提供建议,从以下评论中可以看出。我的方法是将response对象和另一个PK对象设置为一个附加类,然后保存在Realm中。但这也没有成功。我甚至试过复制或更新。请解释一下,如果我不能控制api格式,那么如何设置主键而不重复?我试过了,但还是一样。我已经更新了上述代码。请查收。我设置PK的方式错了吗?你甚至不应该有一个
SearchResultsResponse
class对不起,我没有理解你。为什么?这是反应课。还有内部类。我还没有把它们寄出去。我应该吗?我已经更新了问题,请检查。我正在获取数据,甚至正在插入。问题是它没有每次更新实际上我想知道为什么数据没有得到更新?难道我没有正确编码insertOrUpdate吗?我已经坐了三个月了,但我一直都在做这个。我试过了,但还是一样。我已经更新了上述代码。请查收。我设置PK的方式错了吗?你甚至不应该有一个
SearchResultsResponse
class对不起,我没有理解你。为什么?这是反应课。还有内部类。我还没有把它们寄出去。我应该吗?我已经更新了问题,请检查。我正在获取数据,甚至正在插入。问题是它没有每次更新实际上我想知道为什么数据没有得到更新?难道我没有正确编码insertOrUpdate吗?我已经坐了3个月了,一直都在做这件事。
public class TrainRoute extends RealmObject {
    @PrimaryKey
    private String key; // train_number + station_code + scharr_date + scharr

    private long trainNumber;
    private int no;
    private String stationName;
    private String stationCode;
    private boolean hasArrived;
    private boolean hasDeparted;
    private int day;
    private int distance;
    private String scharr;
    private String schdep;
    private String actarr;
    private String actdep;
    private String scharrDateText;
    private String actarrDateText;
    private Date scharrDate;
    private Date actarrDate;
    private int latemin;

    // getter setter
}