我有两个UIViewControllers。在FirstViewController中,我从firebase下载groupsInfo数据并在UITableView中显示详细信息(groupName,lastMessage)并再添加一个标签" lastMessageTime"(此信息将来自SecondViewController)。我点击了UITableView单元格,它转到详细页面SecondViewController,在这里我根据tapped groupID下载messageInfo。当我离开SecondViewController时,我想将普通的特定groupID的最后消息时间(plist或NSUserDefaults)存储起来,并在FirstViewController或其他一些ViewController(后期阶段)中检索信息。保存的数据不应该被删除,而且我应该能够更新(如果已存在特定密钥的值)" lastMessageTime"每当有新消息时,对于任何特定的groupID。
以下是我尝试的代码,但不确定这是否是最佳方法。如果能告诉我有效处理这一要求的最佳方法,那就太棒了。
SecondViewController:
-(void)viewWillDisappear:(BOOL)animated{
[self updateLastMessageSeenTime:groupID];
}
-(void)updateLastMessageSeenTime:(NSString*)groupID
{
FIRDataSnapshot *snapshot = [self.messageArray lastObject];
NSMutableDictionary *lastSeenMessageTime = [[NSMutableDictionary alloc]init];
NSString *lastMessageTime = snapshot.value[@"timeStamp"];
[lastSeenMessageTime setValue:lastMessageTime forKey:groupID];
NSUserDefaults *lastSeenMessageTimeUserDefaults = [NSUserDefaults standardUserDefaults];
[lastSeenMessageTimeUserDefaults setObject:lastSeenMessageTime forKey:@"lastMessageTimeArrayKey"];
[lastSeenMessageTimeUserDefaults synchronize];
}
上述方法会删除所有以前的数据。例如,如果对于不同的groupID,每次访问SecondViewController两次,则删除先前的groupID的lastMessageTime并替换为新的groupID。
答案 0 :(得分:0)
您需要首先从case when SUBSTR(C.VARIANT, 1, LENGTH(C.MANUFACTURER || ' ' || C.MODEL_GROUP))
= C.MANUFACTURER || ' ' || C.MODEL_GROUP
then SUBSTR(C.VARIANT, 1+ LENGTH(C.MANUFACTURER || ' ' || C.MODEL_GROUP))
else s
end
获取字典,如果它不存在,则NSUserDefaults
新字典。试试这个。
init