我正在使用Objective C开发应用程序。
我在服务器端的响应中得到以下数组(我使用1>------ Build started: Project: cpptest, Configuration: Debug Win32 ------
1> cpptest.cpp
1>c:\work\cpptest\cpptest\cpptest.cpp(33): error C3861: 'proc1': identifier not found
的{{1}}方法。
Get
我想为键AFNetworking
分隔值。
简而言之,我想要输出: Response from server: `[{"name":"option1","profile_id":0,"profile_name":"option1"},{"name":"option2","profile_id":0,"profile_name":"option2"},{"name":"option3","profile_id":0,"profile_name":"option3"},{"name":"option4","profile_id":0,"profile_name":"option4"},{"name":"option5","profile_id":0,"profile_name":"option5"},{"name":"option6","profile_id":0,"profile_name":"option6"},{"name":"option7","profile_id":0,"profile_name":"option7"},{"name":"option8","profile_id":0,"profile_name":"option8"},{"name":"option9","profile_id":0,"profile_name":"option9"},{"name":"option10","profile_id":0,"profile_name":"option10"}]`
为此,我尝试了以下方式:
将该响应存储在数组(name
)中。然后尝试按以下方式分隔键[option1,option2,option3,option4,option5,option6,option7,option8,option9,option10]
的值,
_arr
但不幸的是,这不起作用。应用程序崩溃并提供以下日志。
name
提前谢谢。
答案 0 :(得分:1)
试试这个
NSMutableArray *arrOptions = [NSMutableArray new];
for (int i=0; i<_arr.count; i++) {
[arrOptions addObject:[[_arr objectAtIndex:i] objectForKey:@"name"]];
}
此处arrOptions
将包含您想要的输出。
答案 1 :(得分:1)
我可以看到您正在以JSON格式获得响应。因此,您可以将JSON转换为可变容器,如Dictionary和Arrays。在你的情况下,它是一系列字典。
NSArray *jsonArray = [NSJSONSerialization JSONObjectWithData: data options: NSJSONReadingMutableContainers error: &e];
if(!jsonArray)
{
for(NSDictionary *dict in jsonArray)
{
NSLog(@"%@", dict valueForKey: @"name");
}
}
答案 2 :(得分:1)
根据您下面的JSON数据,您需要使用NSDictionary
而不是数组来存储数据。
[{
"name": "option1",
"profile_id": 0,
"profile_name": "option1"
}, {
"name": "option2",
"profile_id": 0,
"profile_name": "option2"
}, {
"name": "option3",
"profile_id": 0,
"profile_name": "option3"
}, {
"name": "option4",
"profile_id": 0,
"profile_name": "option4"
}, {
"name": "option5",
"profile_id": 0,
"profile_name": "option5"
}, {
"name": "option6",
"profile_id": 0,
"profile_name": "option6"
}, {
"name": "option7",
"profile_id": 0,
"profile_name": "option7"
}, {
"name": "option8",
"profile_id": 0,
"profile_name": "option8"
}, {
"name": "option9",
"profile_id": 0,
"profile_name": "option9"
}, {
"name": "option10",
"profile_id": 0,
"profile_name": "option10"
}]
使用dict获取数据:
NSDictionary *jsonDataDict = [NSJSONSerialization JSONObjectWithData:data options:0 error:nil];
NSArray *optionArray = [jsonDataDict valueForKey:@"name"];
问题:您正在尝试获取name
密钥的数据,并将整个JSON
数据存储在数组中。
数组不包含使用
NSDictionary
的键值对。
答案 3 :(得分:1)
实际上你的JSON响应以Array
开头,所以喜欢
NSArray *ResponseArray = [NSJSONSerialization JSONObjectWithData: data options: KNilOptions error: nil];
NSMutableArray *finalArray = [NSMutableArray array];
for (NSDictionary *temp in ResponseArray) {
[finalArray addObject:temp[@"name"]];
}
AFNetworking的选择-2
NSMutableArray *finalArray = [NSMutableArray array];
for (NSDictionary *temp in responseObject) {
[finalArray addObject:temp[@"name"]];
}
答案 4 :(得分:1)
你想要实现的目标和你的想法我可以说你正在走上正轨。 您已在NSDictionary中转换了响应数据,但它必须是数组。
java -cp test.jar "$OPTS" java.Test
这会将您的响应转换为数组,您可以使用
NSArray *responseArray = [NSJSONSerialization JSONObjectWithData:data options:0 error:nil];
这将导致与@Krishna Kumar的答案相同的结果,但是通过这个,您将能够避免&#34;对于&#34;循环。