菜鸟教程小白 发表于 2022-12-12 17:00:29

ios - 使用 indexpath.row 引用从 JSON 对象数组中获取对象


                                            <p><p>尊敬的 StackOverflow 用户,</p>

<p>第一次发帖,我会尽力而为!</p>

<p>我有一个简单的 JSON 文件,看起来像这样(我不会包含所有文件,因为它太长了):</p>

<pre><code>{
&#34;guidelines&#34;: [
{
&#34;title&#34;: &#34;Editorial - Doporučené postupy&#34;,
&#34;guidelinepath&#34;: &#34;1 - Editorial&#34;
},
{
&#34;title&#34;: &#34;Preambule&#34;,
&#34;guidelinepath&#34;: &#34;1 - Preambule&#34;
},
{
&#34;title&#34;: &#34;Zásady dispenzární péče ve fyziologickém těhotenství&#34;,
&#34;guidelinepath&#34;: &#34;1- Z&#34;
},
{
&#34;title&#34;: &#34;Provádění screeningu poruch glukózové tolerance v graviditě&#34;,
&#34;guidelinepath&#34;: &#34;2&#34;
}]
}
</code></pre>

<p>使用这些数据,我设法填充了一个 tableView(即,在命令行输出中正确解析的 JSON),为我欢呼。现在我想做的是检测已被点击的 tableView 单元格并直接指向与该标题相关的 guidelinepath JSON 对象(这将导致一个文本文件将填充一个 TextView )。我试过了许多不同的解决方案,但它们都导致(null)。</p>

<p>以下是我设法完成且没有错误的不完整代码。</p>

<pre><code>- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
if () {
    NSLog(@&#34;seguehasbeenselected&#34;);
    NSIndexPath *indexPath = ;
    NSLog(@&#34;%@ is the indexpath&#34;, indexPath);
}
}
</code></pre>

<p>我已尝试彻底研究该问题,并尝试通过以下答案帮助自己:
<a href="https://stackoverflow.com/questions/10457649/using-indexpath-row-to-get-an-object-from-an-array" rel="noreferrer noopener nofollow">Using indexPath.row to get an object from an array</a> </p>

<p> <a href="https://stackoverflow.com/questions/12329831/getting-json-object-and-then-assign-to-uitable-view" rel="noreferrer noopener nofollow">getting json object and then assign to uitable view</a> </p>

<p>但他们无法以某种方式真正回答我的问题。任何帮助将不胜感激!</p>

<p>如果想了解更多关于 JSON 是如何解析的信息,下面是代码:</p>

<pre><code>{
;
NSString *jsonFilePath = [ pathForResource:@&#34;postupy&#34; ofType:@&#34;json&#34;];
NSData *jsonData = ;
NSError *error = nil;
NSDictionary *dataDictionary = ;
NSLog(@&#34;%@&#34;,dataDictionary);
self.guidelines = ;
self.guidelineFiles = ;
}
</code></pre>

<p>指南文件和指南的声明:</p>

<pre><code>#import &lt;UIKit/UIKit.h&gt;


@interface PostupyTableViewController : UITableViewController

@property (nonatomic, strong) NSArray *guidelines;
@property (nonatomic, strong) NSArray *guidelineFiles;


@end
</code></pre>

<p><strong>-- 最终解决方案--</strong></p>

<p>我按如下方式编辑了 prepareForSegue 方法,现在它可以完美运行:</p>

<pre><code>- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender

{
    if () {
      NSLog(@&#34;seguehasbeenselected&#34;);
      NSIndexPath *indexPath = ;
      NSLog(@&#34;%@ is the indexpath&#34;, indexPath);
      NSDictionary *item = ;
      NSString * path = ;
      NSLog(@&#34;%@ is the path&#34;,path);
      PostupyDetailViewController *pdwc = (PostupyDetailViewController *)segue.destinationViewController;
      pdwc.guidelineChosen = path;
    }
}
</code></pre></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>从您的 json 看来, <code></code>;返回一个 NSArray。所以访问正确的项目只需使用:</p>

<pre><code>NSDictionary *item = ;
NSString   *path = ;
</code></pre></p>
                                   
                                                <p style="font-size: 20px;">关于ios - 使用 indexpath.row 引用从 JSON 对象数组中获取对象,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/20372470/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/20372470/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - 使用 indexpath.row 引用从 JSON 对象数组中获取对象