2013-07-04 3 views
2

Я отправляю запрос с AFNetworking для Objective-C. Когда я NSLog параметры, это объект, который я отправляю:Данные JSON перепутаны в AFNetworking POST-запрос

games = (
     { 
     id = 50; 
     p = 8; 
     ts = 0; 
     tt =(); 
     tw = 0; 
     ys = 35150; 
     yt = { 
      156424496 = "37.416669"; 
      156609008 = "56.661210"; 
      .... 
      252846816 = "7.075133"; 
      252856944 = "61.329850"; 
     }; 
     yw = 0; 
    }, ... 

Это то, что получает сервер.

games = (
     {id = 50;}, 
     {p = 8;}, 
     {ts = 0;}, 
     {tw = 0;}, 
     {ys = 35150;}, 
     { 
      yt = {156424496 = "37.416669";}; 
     }, 
     { 
      yt = {156609008 = "56.661210";}; 
     }, 
     ... 
     { 
      yt = {252846816 = "7.075133";}; 
     }, 
     { 
      yt = {252856944 = "61.329850";}; 
     }, 
     {yw = 0;}, 
... 

Как будто он принимает каждое свойство моего объекта и создает с ним новый объект. Хуже то, что он принимает несколько объектов, находящихся в массиве, и помещает все свойства всех объектов и превращает их в отдельный объект на той же глубине массива.

Вот код, я использую, чтобы отправить это от:

NSArray *games = [ResourceManager getAllGames]; 
NSMutableArray *gamesArray = [[NSMutableArray alloc] initWithCapacity:[games count]]; 
for(Game *g in games) 
{ 
    [gamesArray addObject:[g toDictionary]]; 
} 
User *user = [ResourceManager getUser]; 
NSDictionary *params = [[NSDictionary alloc] initWithObjectsAndKeys:gamesArray, @"games", user.id, @"user_id", nil]; 
NSLog(@"PARAMS: %@", params); <- this is the first block of code above 
[self postPath:API_SYNC_GAMES_URL parameters:params success:^(AFHTTPRequestOperation *operation, id JSON) 
{ 
} 

Я не мог понять, почему это будет происходить, и я все из догадок. Если бы кто-то мог указать мне в правильном направлении, это было бы очень признательно.

UPDATE

Если я оставить single object, а не массив объектов, которые он приходит на сервер успешно.

+0

Не следует ли разделять запятые пары ключ-значение? – David

+0

Как вы сериализуете свой объект в JSON? –

+0

Это NSArray из NSDictionaries, что я передаю запрос AFNetworking – brenjt

ответ

2

Я смог решить эту проблему, используя NSDictionary вместо массива. Каждый объект у меня есть уникальный ключ, так что я использовал этот ключ для NSDictionary как так:

NSMutableDictionary *gamesArray = [[NSMutableDictionary alloc] 
              initWithCapacity:[games count]]; 
for(Game *g in games) 
{ 
    [gamesArray setObject:[g toDictionary] 
        forKey:[NSString stringWithFormat:@"%@", g.id]]; 
} 

Это, кажется, решен вопрос.

Смежные вопросы