在我们的应用程序中,当用户第一次注册时,我需要保存用户 key 及其值。所以我第一次创建成功这样的格式;
key: "ayi927GHt548"
data: {
userdata: [
{classId: "001", updateDate:"2018/02/12"}
]}
为此,我得到类 ID 和更新日期,如下所示;这是代码
-(void)someMethod {
// ... do the process to get user class ID and user key
userClassID = @"001" // string declared global
userKey = @"ayi927GHt548" // string declared global
[apiManager saveUserInformationwithKey:userKey andValue:[self saveCurrentUserIformationIntoUserInfoAPI]];
}
-(NSDictionary *)saveCurrentUserInformationIntoUserInfoAPI {
NSDictionary *dictionaryUserInfo = @{
@"userData": @[
@{
@"classId": userClassID, // I get user class id
@"updateDate": [self getCurrentDateTime]
}
]
};
return dictionaryUserInfo;
}
//在全局 apimanager 类中,我有一个方法可以添加键值以获得最终解决方案
-(void)saveUserInformationwithKey:(NSString *)key andValue:(NSDictionary *)value {
NSDictionary *authInform = @{
@"key": key,
@"value": value
};
// call api for post method
}
我做对了这么多我想要的。
但问题是另一种情况,我需要将新值附加到相同的现有“用户数据”,而不更改前一个,看起来像;
key: "ayi927GHt548"
data: {
userdata: [
{classId: "001", updateDate:"2019/02/18"},
{classId: "003", updateDate:"2019/02/21"} //? here this is the new object is which i want to add
]
}
我怎么会变成这样?请帮忙
目前我正在这样做
NSMutableArray *dataFinal = [NSMutableArray arrayWithObject:[[NSUserDefaults standardUserDefaults] objectForKey:@"data"]];
NSMutableDictionary *dict = [[NSMutableDictionary alloc]initWithCapacity:5] ;
[dict setObject:@"54455" forKey:@"classId"];
[dict setObject:[self getCurrentDateTime] forKey:@"updateDate"];
[dataFinal addObject:dict];
NSLog(@"Final: %@", dataFinal);
响应看起来像这样,但我需要在用户数据中追加
{
key = 12345;
data = {
userdata = (
{
updateDate = "2019/02/21";
classId = 0002;
}
);
};
},
{
updateDate = "2019/02/21";
classId = 54455;
}
最佳答案
这就是您获取值并稍后将其附加到数组的方法。
NSMutableArray *userData = [dictionaryInfo objectForKey:@"userData"];
NSDate *yourdate = date;
NSNumber *classID = classID;
NSMutableDictionary *dict = [[NSMutableDictionary alloc]initWithCapacity:5];
[dict setObject:classID forKey:@"classId"];
[dict setObject:yourdate forKey:@"updateDate"];
[userData addObject:dict];
我离开了我的 mac,请自行纠正语义错误。 :)
编辑: 我已将代码添加到您的用户数据中,请尝试添加此行并告诉我?
dataFinal = [[[[NSUserDefaults standardUserDefaults] objectForKey:@"data"] valueForKeyPath:@"data. userdata"]mutableCopy];
打印值并告诉我。 希望对您有所帮助!
关于ios - 在现有键值中添加新的数组对象而不进行更改 - Objective C,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54801153/