Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/blackberry/2.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
Blackberry 持久存储—保存、读取和覆盖数据_Blackberry_Persistent_Overwrite_Persistent Storage - Fatal编程技术网

Blackberry 持久存储—保存、读取和覆盖数据

Blackberry 持久存储—保存、读取和覆盖数据,blackberry,persistent,overwrite,persistent-storage,Blackberry,Persistent,Overwrite,Persistent Storage,我正试图在我的黑莓应用程序中的PersistentStore中保存10个字符串值。其思想是在任何给定时间保存最新的10项(字符串值)。保存前10个值并键入第11个值时,应: 删除第一个条目 将其余9项移到订单上方 将第11个条目保存为第10个值 这就是我想遵循的逻辑。随着条目不断增加,我将最多存储10个条目,这将是最新的10个值。我尝试通过saveChatMsg()方法保存String值: public void saveChatMsg() { 如果(xx如果你想要一个包含10条消息的列表,

我正试图在我的黑莓应用程序中的
PersistentStore
中保存10个字符串值。其思想是在任何给定时间保存最新的10项(字符串值)。保存前10个值并键入第11个值时,应:

  • 删除第一个条目
  • 将其余9项移到订单上方
  • 将第11个条目保存为第10个值
这就是我想遵循的逻辑。随着条目不断增加,我将最多存储10个条目,这将是最新的10个值。我尝试通过
saveChatMsg()
方法保存
String
值:

public void saveChatMsg()
{

如果(xx如果你想要一个包含10条消息的列表,我会使用一个
向量
。向量有一个顺序。你可以从向量中删除第一个(最早的)元素,并在末尾添加一个新的元素

看起来您的持久化存储保留了一个主
哈希表(这很好)。请将您的持久化模型更改为如下所示:

- Hashtable
    - Vector (key = "chatMsgs")
        - String
        - String
        - String
        - String
        - String
        - String
        - String
        - String
        - String
        - String
所以,也许是这样的:

- Hashtable
    - Vector (key = "chatMsgs")
        - String
        - String
        - String
        - String
        - String
        - String
        - String
        - String
        - String
        - String
public void saveChatMsg(字符串newMsg){
Vector msgs=persistentstoreheloper.persistenthastable.get(“chatMsgs”);
//添加新消息(到向量末尾)
msgs.addElement(newMsg);
//如果向量已满,请删除旧邮件
而(msgs.size()>10){
msgs.removeElementAt(0);
}
//将修改后的向量存储回持久存储
persistentstoreheloper.persistenthastable.put(“chatMsgs”,msgs);
//我假设您的PersistentStoreHelper在这里的某个地方调用commit()
}
/**@param index-0是最早的,9是最新的*/
公共字符串getChatMsg(int索引){
Vector msgs=persistentstoreheloper.persistenthastable.get(“chatMsgs”);
返回(字符串)msgs.elementAt(索引);
}

编辑:


(*)我链接到的BlackBerry API文档和BlackBerry Java Storage API文档都将
Java.util.Vector
列为一个
Persistable
类。然而,
Vector
的实际API javadoc并没有说它实现了
Persistable
。我现在无法运行代码,但是如果
String
对象的Vector
不适合您,您可以始终使用
Vector
的子类,比如API文档明确列出为
可持久的
。如果您需要这样做,为了其他人的利益,请发表评论。

如果您想要10条消息的列表,我会使用
Vector
。向量的顺序为。您可以从向量中删除第一个(最早的)元素,然后在末尾添加一个新元素

看起来您的持久化存储保留了一个主
哈希表(这很好)。请将您的持久化模型更改为如下所示:

- Hashtable
    - Vector (key = "chatMsgs")
        - String
        - String
        - String
        - String
        - String
        - String
        - String
        - String
        - String
        - String
所以,也许是这样的:

- Hashtable
    - Vector (key = "chatMsgs")
        - String
        - String
        - String
        - String
        - String
        - String
        - String
        - String
        - String
        - String
public void saveChatMsg(字符串newMsg){
Vector msgs=persistentstoreheloper.persistenthastable.get(“chatMsgs”);
//添加新消息(到向量末尾)
msgs.addElement(newMsg);
//如果向量已满,请删除旧邮件
而(msgs.size()>10){
msgs.removeElementAt(0);
}
//将修改后的向量存储回持久存储
persistentstoreheloper.persistenthastable.put(“chatMsgs”,msgs);
//我假设您的PersistentStoreHelper在这里的某个地方调用commit()
}
/**@param index-0是最早的,9是最新的*/
公共字符串getChatMsg(int索引){
Vector msgs=persistentstoreheloper.persistenthastable.get(“chatMsgs”);
返回(字符串)msgs.elementAt(索引);
}

编辑:


(*)我链接到的BlackBerry API文档和BlackBerry Java Storage API文档都将
Java.util.Vector
列为一个
Persistable
类。然而,
Vector
的实际API javadoc并没有说它实现了
Persistable
。我现在无法运行代码,但是如果
String
对象的Vector
不适用于您,您可以始终使用
Vector
的子类,比如API文档明确列出为
Persistable
。如果您最终需要这样做,为了其他人的利益,请发表评论。

谢谢。这很有帮助。但是,我遇到了一个关于Persistable的问题当删除/卸载应用程序并重新安装时,保存为永久性的字符串值不会被删除。在这里问这个问题可以吗?还是我应该作为一个单独的问题来解决这个问题?我在这里问这个问题是因为我保存为永久性的字符串值。什么是“chatMsgs”在这行代码中:Vector msgs=persistentstoreheloper.persistentHashtable.get(“chatMsgs”)。我需要在PersistentStore类中创建一个向量吗?@Sarah,是的,正如你在上面的小图中看到的,你应该在PersistentStore中放入一个哈希表。哈希表中应该有一个向量,向量中应该有10个字符串。因此,无论你在哪里初始化PersistentStore,你都会为键插入一个向量
“chatMsgs”
,而不是存储10个字符串对象,它们都有自己的键(
“chatMsg00”
“chatMsg01”
,等等)@Sarah,关于你的第一个问题,或者。如果你想删除它,让你的哈希表成为你自己的子类(例如,
公共类SarahsHashtable扩展Hashtable实现持久化{
)。我从未在持久性存储中使用过向量。“chatMsgs”是键的长值吗?这有意义吗;'public void saveChatMsg1(String newMsg){final long key=0x9df9f961bc6dal;Vector msgs=(Vector)persistentstoreheloper.persistenthastable.get(key);//如果(msgs==null){msgs=new Vector();PersistentStoreHelper.persistentObject.setContents(msgs);Persistent