- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在尝试使用 TinyDB 的 putListObject
函数将对象列表保存到共享首选项,但我收到了 Wrong 2nd argument type
错误。我可以很好地使用 putObject
函数,错误仅在我使用 putListObject
函数时出现。
玩家类别:
public class Player {
private String name = "";
private int score = 0;
public Player(String name, int score) {
this.name = name;
this.score = score;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getScore() {
return score;
}
public void setScore(int score) {
this.score = score;
}
}
putListObject 函数:
public void putListObject(String key, ArrayList<Object> objArray){
checkForNullKey(key);
Gson gson = new Gson();
ArrayList<String> objStrings = new ArrayList<String>();
for(Object obj : objArray){
objStrings.add(gson.toJson(obj));
}
putListString(key, objStrings);
}
我是如何使用这个函数的:
ArrayList<Player> playerList = new ArrayList<Player>();
TinyDB tinydb = new TinyDB(this);
tinydb.putListObject("players", playerList);
我得到的错误:
putListObject (String java.util.ArrayList<java.lang.Object>) in TinyDB cannot be applied to (String java.util.ArrayList<com.example.package.Player>)
帮助将不胜感激!
最佳答案
kcochibili TinyDB的开发者在github上回答了这个问题。他说,您必须在触发 putListObject 之前将自定义对象转换为对象。
放置自定义对象 ArrayList 的示例:
ArrayList<Player> players = new ArrayList<Player>();
ArrayList<Object> playerObjects = new ArrayList<Object>();
for(Player a : players){
playerObjects.add((Object)a);
}
TinyDB tinydb = new TinyDB(this);
tinydb.putListObject("players", playerObjects);
此外,当您想从数据库中获取值时,它会给出 ArrayList< Object >。因此,您可能希望将它们转换回您的自定义对象。
一个示例:
TinyDB tinydb = new TinyDB(this);
ArrayList<Object> playerObjects = tinydb.getListObject("players", Player.class);
ArrayList<Player> players = new ArrayList<Player>();
for(Object objs : playerObjects){
players.add((Player)objs);
}
您可以通过转换使用所有自定义对象。我更喜欢的另一种方法是,将所有自定义对象的 get 和 put 方法添加到 TinyDB 类中。例如:
public void putListPlayer(String key, ArrayList<Player> playerList){
checkForNullKey(key);
Gson gson = new Gson();
ArrayList<String> objStrings = new ArrayList<String>();
for(Player player: playerList){
objStrings.add(gson.toJson(player));
}
putListString(key, objStrings);
}
//No need Class<?> mClass parameter. Because we know it is Player!
public ArrayList<Player> getListPlayer(String key){
Gson gson = new Gson();
ArrayList<String> objStrings = getListString(key);
ArrayList<Player> playerList = new ArrayList<Player>();
for(String jObjString : objStrings){
Player player = gson.fromJson(jObjString, Player.class);
playerList.add(player);
}
return playerList;
}
关于java - Android Shared Preference TinyDB putListObject 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35101437/
我正在尝试使用 FastAPI 的 tinydb,但我被日期卡住了,TinyDB 中是否有一个在两个日期之间查找对象的函数,我找不到任何类似 Pymongo 的 $gt 等,我试过类似的东西但是没有成
我试图从我的tinyDB中获取最后一条记录,所以我想进行一个如下所示的查询:“SELECT * FROM 表 ORDER BY id DESC LIMIT 1”这应该给我最后一行。虽然我不知道如何使用
我正在使用App Inventor制作一个应用程序,它可以计算运行者的时间和位置,并将这些数据存储在TinyDB中。该数据也显示在屏幕上。现在,将其发布到我的服务器上,问题就来了。我已经在一个过程中显
我想知道是否有一种方法可以将我的 App Inventor 应用程序与已经加载到 TinyDB 中的数据一起分发,而无需对所有内容进行硬编码以存储所有内容应用程序启动时的数据。是使用 TinyWebD
我一直在尝试使用 TinyDB 在一个表中创建多个表。这里有一个网站可以帮助您了解什么是 TinyDb ( TinyDB PDF )。 PDF文件没有说明如何将多张表插入一张,一张多条数据插入一张表。
是否可以在 TinyDB 中动态构建查询?它的逻辑查询操作是这样的: >>> from tinydb import TinyDB, where >>> db = TinyDB('db.json') >
我最近开始使用 Python 编写代码,并且刚刚开始使用 TinyDB。我的插入、删除和更新工作正常,但我不知道如何从我的数据中检索值。 {"_default": {"1": {"name": "Sa
如何从TinyDB中删除记录或文档 数据库示例: {"1" : {"id_key" : "xxx", "params" : {} } }, {"2" : {"id_key" : "yyy", "par
我很难确定是否可以使用 TinyDB 一次检查多个键值。目前,我可以通过在 if 语句中使用 and 来检查多个字段,如下所示: def check_table(FNAME="NULL", LNAME
我想开发一个需要小型数据库的简单 Android 应用程序。我已经用 App Inventor 和 TinyDB 开发了一个原型(prototype),但似乎 TinyDB 允许使用相同的“标签”向数
我有一个包含 15 列和大约 100 万行的大型 csv 文件。我想将数据解析到 tinyDB 中。我使用的代码如下: import csv from tinydb import TinyDB db
我有一个包含 15 列和大约 100 万行的大型 csv 文件。我想将数据解析到 tinyDB 中。我使用的代码如下: import csv from tinydb import TinyDB db
我正在学习如何在 Python 上使用 TinyDB,我已经掌握了基础知识(添加、删除、更新等)。但现在我正在尝试从数据库中检索特定值。我正在使用的代码是在这个方法中: def showpasswor
我为一个项目创建了一个数据库,我希望能够在数据库中搜索值,但比简单的 == 操作更好。例如,如果有人输入“columbia”进行搜索,我想要将“哥伦比亚大学”作为该特定人的“隶属关系”键值的字典 最佳
我希望有人能帮助我,或者至少给我一些想法。 我正在为工程行业开发 App Inventor 应用程序。 App基本完成,但是App Inventor不支持对sd卡的I/O。 现在我需要能够在不使用任何
我正在尝试使用 TinyDB 的 putListObject 函数将对象列表保存到共享首选项,但我收到了 Wrong 2nd argument type 错误。我可以很好地使用 putObject 函
我是一名优秀的程序员,十分优秀!