菜鸟教程小白 发表于 2022-12-12 13:54:02

iphone - NSMutableArray 没有获取 XML 值


                                            <p><p>我正在尝试使用 <code>TBXML</code> 解析 XML 文件并将值放入多维 <code>NSMutableArray</code>
但问题是这些值没有被添加到数组中,如果我输出这些值,那么它会返回 <code>null</code> 和 <code>0</code>。</p>

<p>这是我的代码:</p>

<pre><code>- (void)viewDidLoad
{
    ;
    ;

    // RETURNS 0
    NSLog(@&#34;weatherArray count: %d&#34;, );

    // RETURNS NULL
    NSLog(@&#34;weatherArray value: %@&#34;, weatherArray);
}

- (void)downloadAndParseXml:(NSString *)xmlUrl
{
    // Allocating the array
    weatherArray = ;

    TBXMLSuccessBlock sBlock = ^(TBXML *tbxmlDocument) {
      if (tbxmlDocument.rootXMLElement)
            ;
    };

    TBXMLFailureBlock fBlock = ^(TBXML *tbxmlDocument, NSError *error) {
      NSLog(@&#34;Failureblock: %@\n%@&#34;, , );
    };

    success:sBlock failure:fBlock];
}

- (void)fillArrayWithXmlContents:(TBXMLElement *)element {
    do {
      if (element-&gt;firstChild)
            ;

      if ([ isEqualToString:@&#34;note&#34;]) {

            // Adding values into the multidimensional array
            [weatherArray addObject:[NSArray arrayWithObjects:
                ],
                ],
                ],
                ], NULL]];

            // Correct value is getting logged
            NSLog(@&#34;weatherArray value: %@&#34;, weatherArray);
      }
    } while ((element = element-&gt;nextSibling));
}
</code></pre></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>您可能需要做的是等待进程完成,并且该 block 实际上不知道您在其中做什么,或者我会说内部函数未被 block 捕获。所以使用数组(仅在 block 完成后调用正在使用您的数组的函数。</p>

<p>例子:</p>

<pre><code>TBXMLSuccessBlock s = ^(TBXML *tbxml) {
    NSLog(@&#34;yes&#34;);
    // Do something with TBXML object &#34;tbxml/add it ur array
   //Here you call the function which is about to use your array.

};

//Not outside the block.
</code></pre>

<p><strong>编辑</strong>:引用这个==> <a href="https://stackoverflow.com/questions/7853915/how-do-i-avoid-capturing-self-in-blocks-when-implementing-an-api/7854315#7854315" rel="noreferrer noopener nofollow">How do I avoid capturing self in blocks when implementing an API?</a> </p></p>
                                   
                                                <p style="font-size: 20px;">关于iphone - NSMutableArray 没有获取 XML 值,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/18504999/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/18504999/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: iphone - NSMutableArray 没有获取 XML 值