NSDictionary和NSArray正在转换为元素数组,同时使用AF2将数据发布到PHP
当我将上述NSDictionary发送到php的AFNetworking 2时,如下所示NSDictionary和NSArray正在转换为元素数组,同时使用AF2将数据发布到PHP,php,ios,objective-c,arrays,afnetworking-2,Php,Ios,Objective C,Arrays,Afnetworking 2,当我将上述NSDictionary发送到php的AFNetworking 2时,如下所示 NSDictionary *partyOne = [NSDictionary dictionaryWithObjectsAndKeys: [NSNumber numberWithInt:2], @"type", [NSNumber numberWithInt:1], @"status",
NSDictionary *partyOne = [NSDictionary dictionaryWithObjectsAndKeys:
[NSNumber numberWithInt:2], @"type",
[NSNumber numberWithInt:1], @"status",
@"name", @"name",
@"name", @"nid",
@"name", @"nationality",
@"", @"address",
@"name", @"mobile",
nil];
NSDictionary *partyTwo = [NSDictionary dictionaryWithObjectsAndKeys:
[NSNumber numberWithInt:2], @"type",
[NSNumber numberWithInt:1], @"status",
@"name", @"name",
@"name", @"nid",
@"name", @"nationality",
@"", @"address",
@"name", @"mobile",
nil];
NSArray *partyArray = [NSArray arrayWithObjects: partyOne, partyTwo, nil];
NSDictionary *finalData =[NSDictionary dictionaryWithObject: partyArray forKey:@"details"];
我在我的php服务器上收到它
// Send the data to server
NSDictionary *regDic = [self generteJasonData];
// Send the registered data to server
AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
[manager.requestSerializer setAuthorizationHeaderFieldWithUsername:userName password:userpassWd];
manager.responseSerializer = [AFJSONResponseSerializer serializer];
[manager setShouldUseCredentialStorage:NO];
NSMutableURLRequest *request = [manager.requestSerializer requestWithMethod:@"POST" URLString:@"http://testlink/submit"parameters:regDic];
[request setHTTPShouldHandleCookies:NO];
AFHTTPRequestOperation *operation = [[AFHTTPRequestOperation alloc] initWithRequest:request];
AFJSONResponseSerializer *serializer = [AFJSONResponseSerializer serializer];
[operation setResponseSerializer:serializer ];
[operation setShouldUseCredentialStorage:NO];
[operation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) {
NSLog(@"Success: %@", responseObject);
[manager.requestSerializer clearAuthorizationHeader];
[UIApplication sharedApplication].networkActivityIndicatorVisible = NO;
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
NSLog(@"Failure: %@ responce :%@", error,operation.responseString);
[manager.requestSerializer clearAuthorizationHeader];
[UIApplication sharedApplication].networkActivityIndicatorVisible = NO;
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"upload", @"") message:NSLocalizedString(@"Some error occureed while uploading data, please tryagain later", @"")
delegate:nil cancelButtonTitle:@"Ok" otherButtonTitles:nil];
[alert show];
}];
[UIApplication sharedApplication].networkActivityIndicatorVisible = YES;
[operation start];
i、 我已经发送了2个数组元素,但是我接收的数组元素和接收的数组元素一样多。
有人能告诉我这里出了什么问题吗。他们的AFNetworking 2.0 API有问题吗?或者我的代码有问题。好的,那么你需要做的就是修复这个方法
details = (
{
address = "";
},
{
mobile = name;
},
{
name = name;
},
{
nationality = name;
},
{
nid = name;
},
{
status = 1;
},
{
type = 2;
},
{
address = "";
}, {
mobile = name;
}, {
name = name;
},
{
nationality = name;
},
{
nid = name;
},
{
status = 1;
},
{
type = 2;
},
);
在文件AFURLRequestSerialization.m中:
而不是
NSArray * AFQueryStringPairsFromKeyAndValue(NSString *key, id value)
for (int i = 0;i < [array count];++i)
成功
for (id nestedValue in array)
[mutableQueryStringComponents addObjectsFromArray:AFQueryStringPairsFromKeyAndValue([NSString stringWithFormat:@"%@[]", key], nestedValue)];
成功
for (id nestedValue in array)
[mutableQueryStringComponents addObjectsFromArray:AFQueryStringPairsFromKeyAndValue([NSString stringWithFormat:@"%@[]", key], nestedValue)];
AFNetworking 2.0:我使用@gilad answer并对其进行了一些修改,使其能够正常工作。所以我所做的写在下面:
[mutableQueryStringComponents addObjectsFromArray:AFQueryStringPairsFromKeyAndValue([NSString stringWithFormat:@"%@[%d]", key,i], nestedValue)];
我刚刚在前面提到的AFURLRequestSerialization.m类中编辑了AFQueryStringPairsFromKeyAndValue,然后它开始按照我们想要的方式工作。Here
NSDictionary*finalData=[NSDictionary Dictionary Dictionary WithObject:arrayDictionary forKey:@“details”]
什么是arrayDictionary
?@katre,我已经编辑了我的查询。是“partyArray”我碰到了同一个问题Vaz你找到解决办法了吗?回答得好兄弟。我很震惊为什么这个答案不被接受,但你应该解释得更清楚,你刚刚救了我一天:),我只是为了这个问题花了半天时间。谢谢你怎么用这个?我需要使用以下格式执行请求:[{“路径”:“/”,“值”:{“状态”:“活动”},“操作”:“替换”}]您能解释更多吗?显示您的使用代码。@karthikeyan我的请求类似于[{},{},{}]格式。正如我在回答中所提到的,我已经用这个方法替换了NSArray*AFQueryStringPairsFromKeyAndValue(NSString*key,id-value)mines@karthikeyan如果你还在寻找解决方案,那么你可以告诉我。我可以试着给你们编辑好的AFNetworking框架谢谢你们的重播,我已经用NSMutableString完成了,我只是这样做了formate,然后转换成数据,然后发送到服务器,这对我来说是可行的,