如何在Objective C中的didFinishLoading中获取IndexPath.row
Posted
技术标签:
【中文标题】如何在Objective C中的didFinishLoading中获取IndexPath.row【英文标题】:how to get IndexPath.row in didFinishLoading in Objective C 【发布时间】:2016-11-28 06:48:29 【问题描述】:我是 ios 新手,我遇到了关于在 cellforrowAtIndexPath 方法之外获取 IndexPath.row 的问题,即在 didFinishLoading 上。我的代码是这样的
- (void)connectionDidFinishLoading:(NSURLConnection *)connection
loginStatus = [[NSString alloc] initWithBytes: [myNSMDataFromServer mutableBytes] length:[myNSMDataFromServer length] encoding:NSUTF8StringEncoding];
NSLog(@"loginStatus =%@",loginStatus);
NSError *parseError = nil;
NSDictionary *xmlDictionary = [XMLReader dictionaryForXMLString:loginStatus error:&parseError];
NSLog(@"JSON DICTIONARY = %@",xmlDictionary);
recordResult = [xmlDictionary[@"success"] integerValue];
NSLog(@"Success: %ld",(long)recordResult);
NSDictionary* Address=[xmlDictionary objectForKey:@"soap:Envelope"];
NSLog(@"Address Dict = %@",Address);
NSDictionary *new =[Address objectForKey:@"soap:Body"];
NSLog(@"NEW DICT =%@",new);
NSDictionary *LoginResponse=[new objectForKey:@"TFMComplaints_GetNewResponse"];
NSLog(@"Login Response DICT =%@",LoginResponse);
NSDictionary *LoginResult=[LoginResponse objectForKey:@"TFMComplaints_GetNewResult"];
NSLog(@"Login Result =%@",LoginResult);
if(LoginResult.count>0)
NSLog(@"Login Result = %@",LoginResult);
NSLog(@"Login Result Dict =%@",LoginResult);
NSString *teststr =[[NSString alloc] init];
teststr =[LoginResult objectForKey:@"text"];
NSLog(@"Test String Value =%@",teststr);
NSString *string = [LoginResult valueForKey:@"text"];
NSLog(@"Now String is =%@",string);
NSData *data =[string dataUsingEncoding:NSUTF8StringEncoding];
NSError* error;
NSArray *array = [NSJSONSerialization JSONObjectWithData:data options:NSUTF8StringEncoding error:&error];
NSIndexPath *selectedIndexPath = [closetbl indexPathForSelectedRow];
NSDictionary *firstObj = [array objectAtIndex:selectedIndexPath.row];
idarray=[[NSMutableArray alloc]init];
idarray=[firstObj valueForKey:@"Key"];
NSLog(@"Result Array =%@",idarray);
我只得到一个为 0 的值。
提前致谢!
【问题讨论】:
你想在 didFinishLoading 方法中这样做的目的是什么? 请解释更多..... NSDictionary *firstObj = [array objectAtIndex:indexpath.row]; @ashmi123 我只得到字典中 0 索引处的值。但有 19 个对象。 如果你想要所选行的索引路径,那么你可以这样做[tableView indexPathForSelectedRow];
所以,问 cleat 以便有人可以帮助!
【参考方案1】:
只需为数组添加一个 for 循环:
for (int i = 0; i < array.count; i++)
//where i will be the index path. You can use it like this
NSDictionary *firstObj = [array objectAtIndex:i];
在您的情况下,您可以像这样使用它:
idarray=[[NSMutableArray alloc]init];
for (int i = 0; i < array.count; i++)
NSDictionary *firstObj = [array objectAtIndex:i];
[idarray addObject:[firstObj valueForKey:@"Key"]];
NSLog(@"Result Array =%@",idarray);
【讨论】:
你需要选择索引吗? 我需要所有索引。 所以我已经提到你只需要添加 amor 循环。 显示错误“NSMutableArray”没有可见接口声明选择器addObject:key的值”【参考方案2】:NSIndexPath *selectedIndexPath = [tableView indexPathForSelectedRow];
更多详情请关注:https://developer.apple.com/reference/uikit/uitableview/1615000-indexpathforselectedrow
希望这会有所帮助。
【讨论】:
@Muju 在NSIndexPath *selectedIndexPath = [closetbl indexPathForSelectedRow];
有断点并检查closetbl
、selectedIndexPath.section
和selectedIndexPath.row
的值【参考方案3】:
您可以使用下面的代码来获取索引路径,并且从该索引路径中您还可以获取选定的单元格。
let indexPath = self.tblObj.indexPathForSelectedRow!
let currentCell = self.tblObj.cellForRowAtIndexPath(indexPath)! as! YourTableViewCell
【讨论】:
以上是关于如何在Objective C中的didFinishLoading中获取IndexPath.row的主要内容,如果未能解决你的问题,请参考以下文章
如何在Objective C中的didFinishLoading中获取IndexPath.row
objective-c 中如何在一个函数中调用自己类中的另外一个函数
如何获取嵌套在 UIView 中的 UIView 框架 - Objective C
多个 WKWebView 实例的独立 webView didFinish WKNavigationDelegate 方法
如何在 Objective C 中的 Xcode 8 中设置约束
如何在Objective C中使用解析版本1.12.0加载PFQueryTableViewController中的对象?