Добавить новый объект массива в существующее значение ключа без изменений - Цель C - PullRequest
0 голосов
/ 21 февраля 2019

В нашем приложении, когда пользователь регистрируется впервые, мне нужно сохранить ключ пользователя и его значение.Итак, в первый раз я успешно создан, как этот формат;

key: "ayi927GHt548"
 data: {
 userdata: [
    {classId: "001", updateDate:"2018/02/12"}
 ]}

, для этого я получаю идентификатор класса и дату обновления вот так;вот код

 -(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
 }

так много я сделал правильно, как я хочу.

, но проблема в другом случае, мне нужно добавить новое значение к тем же существующим 'userdata', без изменения предыдущего, которое выглядит так:

   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
      ]
   }

как можноЯ так понимаю?Пожалуйста, помогите

В настоящее время Iam делает так

    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);

и ответ выглядит так, но мне нужно добавить внутрь userdata

{
    key = 12345;
    data =         {
        userdata =             (
                            {
                updateDate = "2019/02/21";
                classId = 0002;
            }
        );
    };
},
    {
    updateDate = "2019/02/21";
    classId = 54455;
}

Ответы [ 2 ]

0 голосов
/ 21 февраля 2019

Вот как вы можете получить значение и добавить его в массив позже.

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, пожалуйста, исправьте ошибки семантики самостоятельно.:)

РЕДАКТИРОВАТЬ: Я добавил код, чтобы быть в ваших userData, попробуйте добавить эту строку и сказать мне?

dataFinal = [[[[NSUserDefaults standardUserDefaults] objectForKey:@"data"] valueForKeyPath:@"data. userdata"]mutableCopy];

Распечатать значения и пустья знаю.Надеюсь, это поможет!

0 голосов
/ 21 февраля 2019

Сначала вам нужно получить массив userData, а затем преобразовать его в изменяемый массив словарей.

Затем вам нужно добавить необходимые данные в userData и затем сохранить их по умолчанию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...