ios - 在现有键值中添加新的数组对象而不进行更改 - Objective C

标签 ios objective-c

在我们的应用程序中,当用户第一次注册时,我需要保存用户 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/

相关文章:

iphone - cocos2d中的Singleton类。访问变量

ios - 仅在验证输入后启用 UIAlertController 的 UIAlertAction

iphone - 使用 NSLog 打印 NSData

objective-c - 预绑定(bind)消息以避免方法查找

ios - ios上的tensorflow,搭建没问题,但是运行的时候报错,无法创建Session,Xcode-log如下

ios - 快速 skscene 触摸并按住其他 Action ,而不仅仅是触摸

ios - boolForKey 无法识别的选择器错误 iOS

ios - 真的很奇怪的应用程序颜色行为?

ios - 使用来自 ios 应用程序的 facebook sdk4.0 在 facebook 上分享视频

ios - UIScrollView 内部的 UIStackView 具有动态更改的项目