尊敬的 StackOverflow 用户,
第一次发帖,我会尽力而为!
我有一个简单的 JSON 文件,看起来像这样(我不会包含所有文件,因为它太长了):
{
"guidelines": [
{
"title": "Editorial - Doporučené postupy",
"guidelinepath": "1 - Editorial"
},
{
"title": "reambule",
"guidelinepath": "1 - Preambule"
},
{
"title": "Zásady dispenzární péče ve fyziologickém těhotenství",
"guidelinepath": "1- Z"
},
{
"title": "rovádění screeningu poruch glukózové tolerance v graviditě",
"guidelinepath": "2"
}]
}
使用这些数据,我设法填充了一个 tableView(即,在命令行输出中正确解析的 JSON),为我欢呼。现在我想做的是检测已被点击的 tableView 单元格并直接指向与该标题相关的 guidelinepath JSON 对象(这将导致一个文本文件将填充一个 TextView )。我试过了许多不同的解决方案,但它们都导致(null)。
以下是我设法完成且没有错误的不完整代码。
- (void)prepareForSegueUIStoryboardSegue *)segue senderid)sender
{
if ([segue.identifier isEqualToString"showGuideline"]) {
NSLog(@"seguehasbeenselected");
NSIndexPath *indexPath = [self.tableView indexPathForSelectedRow];
NSLog(@"%@ is the indexpath", indexPath);
}
}
我已尝试彻底研究该问题,并尝试通过以下答案帮助自己:
Using indexPath.row to get an object from an array
getting json object and then assign to uitable view
但他们无法以某种方式真正回答我的问题。任何帮助将不胜感激!
如果想了解更多关于 JSON 是如何解析的信息,下面是代码:
{
[super viewDidLoad];
NSString *jsonFilePath = [[NSBundle mainBundle] pathForResource"postupy" ofType"json"];
NSData *jsonData = [NSData dataWithContentsOfFile:jsonFilePath];
NSError *error = nil;
NSDictionary *dataDictionary = [NSJSONSerialization JSONObjectWithData:jsonData options:0 error:&error];
NSLog(@"%@",dataDictionary);
self.guidelines = [dataDictionary objectForKey"guidelines"];
self.guidelineFiles = [dataDictionary objectForKey"guidelinepath"];
}
指南文件和指南的声明:
#import <UIKit/UIKit.h>
@interface PostupyTableViewController : UITableViewController
@property (nonatomic, strong) NSArray *guidelines;
@property (nonatomic, strong) NSArray *guidelineFiles;
@end
-- 最终解决方案--
我按如下方式编辑了 prepareForSegue 方法,现在它可以完美运行:
- (void)prepareForSegueUIStoryboardSegue *)segue senderid)sender
{
if ([segue.identifier isEqualToString"showGuideline"]) {
NSLog(@"seguehasbeenselected");
NSIndexPath *indexPath = [self.tableView indexPathForSelectedRow];
NSLog(@"%@ is the indexpath", indexPath);
NSDictionary *item = [self.guidelines objectAtIndex:indexPath.row];
NSString * path = [item objectForKey "guidelinepath"];
NSLog(@"%@ is the path",path);
PostupyDetailViewController *pdwc = (PostupyDetailViewController *)segue.destinationViewController;
pdwc.guidelineChosen = path;
}
}
Best Answer-推荐答案 strong>
从您的 json 看来, [dataDictionary objectForKey"guidelines"] ;返回一个 NSArray。所以访问正确的项目只需使用:
NSDictionary *item = [self.guidelines objectAtIndex:indexPath.row];
NSString *path = [item objectForKey"guidelinepath"];
关于ios - 使用 indexpath.row 引用从 JSON 对象数组中获取对象,我们在Stack Overflow上找到一个类似的问题:
https://stackoverflow.com/questions/20372470/
|