如何在 Parse.com 中使用本地数据存储

Posted

技术标签:

【中文标题】如何在 Parse.com 中使用本地数据存储【英文标题】:How to use Local Datastore in Parse.com 【发布时间】:2016-03-05 03:44:46 【问题描述】:

我在 android 中有一个小项目,在 Parse 中有数据库。所以现在我想将我的数据从 Parse 更改为本地数据存储,我在 Parse 中启用了本地数据存储,但我不知道如何更改代码。 这是我从 Parse code 下载的数据:

try 
        ParseQuery<ParseObject> query = new ParseQuery<>("BUS_STOP");
        query.orderByAscending("stop_id");
        query.setLimit(2000);
        listA = query.find();
        for (ParseObject mBusStop : listA) 
            BusStop newBusStop = new BusStop();
            newBusStop.setName((String) mBusStop.get("name"));
            newBusStop.setStreet((String) mBusStop.get("street"));
            newBusStop.setStyle((String) mBusStop.get("Type"));
            newBusStop.setNext_id((int) mBusStop.get("next_id"));
            newBusStop.setBus_id((int) mBusStop.get("bus_id"));
            newBusStop.setStop_id((int) mBusStop.get("stop_id"));
            double x, y;
            x = (double) mBusStop.get("coor_x");
            y = (double) mBusStop.get("coor_y");
            LatLng a = new LatLng(x, y);
            newBusStop.setLatLngBus(a);
            busStops.add(newBusStop);
        
     catch (com.parse.ParseException e) 
        Log.e("Error", e.getMessage());
        e.printStackTrace();
    

我的巴士站课:

@ParseClassName("BUS_STOP")
public class BusStop extends ParseObject
String name;
String street;
String style;
LatLng latLngBus;
int bus_id;
int next_id;
int stop_id;
public int getStop_id() 
    return stop_id;

public void setStop_id(int stop_id) 
    this.stop_id = stop_id;


public int getNext_id() 
    return next_id;


public void setNext_id(int next_id) 
    this.next_id = next_id;


public int getBus_id() 
    return bus_id;


public void setBus_id(int bus_id) 
    this.bus_id = bus_id;


public String getName() 
    return name;


public void setName(String name) 
    this.name = name;


public String getStreet() 
    return street;


public void setStreet(String street) 
    this.street = street;


public String getStyle() 
    return style;


public void setStyle(String style) 
    this.style = style;


public LatLng getLatLngBus() 
    return latLngBus;


public void setLatLngBus(LatLng latLngBus) 
    this.latLngBus = latLngBus;

我的申请文件:

public class FindingBusStop extends android.app.Application 
@Override
public void onCreate() 
    super.onCreate();
    Parse.enableLocalDatastore(getApplicationContext());
    ParseObject.registerSubclass(BusStop.class);

我该如何解决?

【问题讨论】:

【参考方案1】:

首先,您必须在保存数据时将数据(将 ParseObject 与本地数据库相关联的术语)“固定”到本地数据库。 因此,例如,如果数据是在按下按钮时保存的,您应该在 setOnClickListener() 中添加以下内容

ParseObject gameScore = new ParseObject("GameScore");
gameScore.put("score", 1337);
gameScore.put("playerName", "Sean Plott");
gameScore.put("cheatMode", false);

//使用此行将对象固定到本地数据库并保存在那里

gameScore.pinInBackground();

还有另一个函数 .pinAll() 或 pinAllInBackgroud()

然后在上面的代码中的 try 部分中,您应该在 find() 调用之前添加以下内容。

query.fromLocalDataStore();

您可能还想使用 findinbackground() 或 getinbackground() 函数,它们将在后台线程中获取数据。

这里的文档也很有帮助https://parse.com/docs/android/guide#local-datastore-querying。

【讨论】:

【参考方案2】:

您可以通过 query.fromLocalDatastore(); 这一行从本地数据存储中获取查询来轻松完成此操作。

我也无法看到您在应用程序类中初始化 parse sdk 的位置,如下所示:... Parse.enableLocalDatastore(getApplicationContext()); Parse.initialize(this, "YOUR_APP_ID", "YOUR_CLIENT_KEY");

编码不错。

【讨论】:

以上是关于如何在 Parse.com 中使用本地数据存储的主要内容,如果未能解决你的问题,请参考以下文章

iOS-Parse.com 将多个设备与本地数据存储同步

Android:如何使用 Parse.com 的 Bolts 同步查询?

解析本地数据存储 + 网络同步

如何将基本核心数据存储保存到 Parse.com?

parse.com 安全性

Parse.com 限制帖子?