编辑措辞。。
我正在使用一个名为Drupal IOS SDk的第三方库来连接我的Drupal网站和我正在开发的IOS应用程序。我使用一种方法来索引我网站上的节点,我只是想知道是否有人知道如何处理我网站的响应。为了提供一点上下文,如果我运行与我的索引方法(getNode方法)类似的代码,它运行良好,并且我能够完美地访问我的响应,如下所示:
//code for correctly working nodeGet method
NSMutableDictionary *nodeData = [NSMutableDictionary new];
[nodeData setValue:@"650" forKey:@"nid"];
[DIOSNode nodeGet:nodeData success:^(AFHTTPRequestOperation *operation, id responseObject) {
//print out responseObject
//NSLog(@"%@", responseObject);
//pull data from the responseObject
NSInteger testNumber = [responseObject objectForKey:@"changed"];
NSLog(@"%ld", (long)testNumber);
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
//we failed, uh-oh lets error log this.
NSLog(@"%@, %@", [error localizedDescription], [operation responseString]);
}];
这是响应对象打印的内容(我没有包括全部内容,但你会明白的):
//printed statement for correctly working nodeGet method
{
changed = 1390534644;
comment = 0;
created = 1390534644;
data = "b:0;";
"ds_switch" = "";
"field_additional_pictures" = (
);
"field_author" = {
und =
上面的代码获取节点数据,在responseObject上调用"objectforkey"方法可以让我访问存储在responseObject中的数字或其他任何东西。在我评论了从响应对象中提取数据的地方,我得到了整数"1390534644",它正确地对应于"已更改"的变量,正如您从上面打印的响应中看到的那样。上面的部分运行良好。这是我感到困惑的下一步:
//code for index method that is in question
NSMutableDictionary *paramsDictionary = [NSMutableDictionary new];
[paramsDictionary setValue:@"books_e_books_other_books" forKey:@"type"];
[DIOSNode nodeIndexWithPage:@"0" fields:@"nid" parameters:paramsDictionary pageSize:@"20"
success:^(AFHTTPRequestOperation *operation, id responseObject) {
//print response object
NSLog(@"%@", responseObject);
NSLog(@"GREAT SUCCESS");
//HERE IS MY PROBLEM!!!
//what do I do with response object?
}
failure:^(AFHTTPRequestOperation *operation, NSError *error) {
//code
NSLog(@"Oh no failed when trying to get the index");
NSLog(@"%@, %@", [error localizedDescription], [operation responseString]);
}];
在本节中,我对所有节点进行索引,并从每个节点获取字段,而不是仅从一个节点获取所有信息。我得到了一个回复,显示到目前为止一切正常,因为回复中有正确的信息。我很困惑,因为我不确定我的回应对象到底是什么。它是一个节点集合,每个节点都有一个"nid"one_answers"uri",如下面的索引方法responseObject所示。例如,如果我想从下面打印区域的第一个"nid"中获得值"650",我该怎么做?我不认为我可以像在第一个工作示例中那样调用"objectForKey",因为每个节点都有一个"nid"。如果我让我的应用程序查找一个名为nid的密钥,它不知道该查找哪个。如果没有唯一的密钥,我如何访问数字650?我在下面打印了我的索引方法responseObject,这样你就可以看到我在说什么了。
//printed statement from index method, this is what i am confused about, there are no unique keys how do I access the value 650 or the first nid
{
nid = 650;
uri = "http://www.domain.com/domain_endpoint/node/650";
},
{
nid = 649;
uri = "http://www.domain.com/domain_endpoint/node/649";
},
{
nid = 647;
uri = "http://www.domain.com/domain_endpoint/node/647";
},
你问这个问题已经几个月了,所以我不确定你是否还在寻找答案,但以防将来有人需要。
responseObject是NSDictionary对象的数组。您可以像访问数组一样访问responseObject项,并根据数据的用途对它们执行任何需要的操作。
例如:
NSArray *responseArray = responseObject;
for (NSDictionary *item in responseArray)
{
// Do something with your item here
// For example:
NSString *uriStr = [item valueForKey:@"uri"];
}