菜鸟教程小白 发表于 2022-12-12 17:16:37

ios - 无法从 NSDictionary 和 JSON 获取值


                                            <p><p>我正在尝试使用从 json 获得的数据构建一些对象。</p>

<p>不幸的是,尽管尝试了很多次,但我在访问元素时一直遇到问题,但所有尝试都失败了。</p>

<p>代码是:</p>

<pre><code>    initWithURL:restURL] queue:[ init] completionHandler:^(NSURLResponse *response, NSData *data, NSError *error) {

    if (error) {
      NSLog(@&#34;Log error thing: %@&#34;, error);
    } else {
      NSLog(@&#34;THE DATA IS REAL: %@&#34;, data);

      NSMutableArray* jsonArray = ;

      NSLog(@&#34;%@&#34;, jsonArray);

      for (NSDictionary *item in jsonArray){
            NSString *val = item[@&#34;title&#34;];
            NSLog(@&#34;AN ITEM: %@ %@&#34;, item, val);
      }

    }
}];
</code></pre>

<p>打印了“数据是真实的”行,json 目前只包含一项,但会包含更多,并且结构如下:</p>

<pre><code>2015-11-21 11:37:06.313 UnfoldApp {
timelines =   (
            {
      &#34;__v&#34; = 1;
      &#34;_id&#34; = 564fff17b6db3ccd0529e410;
      creationDate = &#34;2015-11-21T05:18:42.293Z&#34;;
      location = Norwich;
      picture = &#34;http://photos4.meetupstatic.com/photos/event/a/9/b/c/600_384643452.jpeg&#34;;
      posts =             (
                            {
                &#34;__v&#34; = 0;
                &#34;_id&#34; = 564fff49b6db3ccd0529e411;
                content = &#34;Tonight saw 134 people witness 26 pitches from this years Sync the City attendees. All had a minute each to deliver their business idea. Voting then began. The audience selected their favourite business ideas. Leaving 14 new business leaders ready to form their teams. Over the next hour all participants gravitated towards the business idea that most ...&#34;;
                creationDate = &#34;2015-11-21T05:18:42.299Z&#34;;
                eventDate = &#34;2015-11-17T22:33:45.000Z&#34;;
                heading = &#34;Sync The City Pitches 2015 - Norfolk Tech Journal&#34;;
                imageFilename = &#34;http://www.norfolktechjournal.com/wp-content/uploads/2015/11/Sync-the-City-the-Pitches.jpg&#34;;
                keywords = &#34;City,Student Rental Service,Guerilla Network Pitch,Chris Spalton Photos,Help Majorie Pitch #,NHS,House,Prototype City Pitch,Tim Stephenson&#34;;
                location = doh;
                relatedPosts =                     (
                );
                slug = &#34;sync-the-city-pitches-2015-norfolk-tech-journal&#34;;
            }
      );
      slug = &#34;sync-the-city&#34;;
      title = &#34;Sync the City&#34;;
    }
);
</code></pre>

<p>}</p>

<p> initWithURL:restURL] queue:[ init] completionHandler:^(NSURLResponse *response, NSData *data, NSError *error) {</p>

<pre><code>    if (error) {
      NSLog(@&#34;Log error thing: %@&#34;, error);
    } else {
      NSLog(@&#34;THE DATA IS REAL: %@&#34;, data);

      NSArray* jsonArray = ;
      NSLog(@&#34;%@&#34;, jsonArray);



      NSDictionary *json = ;
       // NSLog(@&#34;Dictionary: %@&#34;, );



}
</code></pre>

<p>当我尝试访问元素时会出现错误,在这种情况下,它是我迭代 jSonarray 中的项目的地方。</p>

<p>堆栈跟踪:</p>

<pre><code>   2015-11-21 11:37:06.314 UnfoldApp -: unrecognized selector sent to instance 0x79d5c110
2015-11-21 11:37:06.317 UnfoldApp *** Terminating app due to uncaught exception &#39;NSInvalidArgumentException&#39;, reason: &#39;-: unrecognized selector sent to instance 0x79d5c110&#39;
*** First throw call stack:
(
    0   CoreFoundation                      0x02199a84 __exceptionPreprocess + 180
    1   libobjc.A.dylib                     0x01c5ae02 objc_exception_throw + 50
    2   CoreFoundation                      0x021a2dd3 - + 275
    3   CoreFoundation                      0x020e0cdd ___forwarding___ + 1037
    4   CoreFoundation                      0x020e08ae _CF_forwarding_prep_0 + 14
    5   UnfoldApp                           0x0009bc39 __33-_block_invoke + 649
    6   CFNetwork                           0x025ccb62 __67+_block_invoke_2 + 177
    7   Foundation                        0x01907a6b __NSBLOCKOPERATION_IS_CALLING_OUT_TO_A_BLOCK__ + 12
    8   Foundation                        0x0182b8ff - + 108
    9   Foundation                        0x0180bd84 - + 697
    10Foundation                        0x0180bac4 - + 83
    11Foundation                        0x0180b902 __NSOQSchedule_f + 245
    12libdispatch.dylib                   0x02b9a9cd _dispatch_client_callout + 14
    13libdispatch.dylib                   0x02b7e650 _dispatch_queue_drain + 2227
    14libdispatch.dylib                   0x02b7db04 _dispatch_queue_invoke + 570
    15libdispatch.dylib                   0x02b807bb _dispatch_root_queue_drain + 550
    16libdispatch.dylib                   0x02b8058e _dispatch_worker_thread3 + 115
    17libsystem_pthread.dylib             0x02eba270 _pthread_wqthread + 1050
    18libsystem_pthread.dylib             0x02eb7f82 start_wqthread + 34
)
libc++abi.dylib: terminating with uncaught exception of type NSException
</code></pre>

<p>感谢您的帮助,非常感谢。</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>你能在解析时试试这个吗:</p>

<pre><code>if (error) {
      NSLog(@&#34;Log error thing: %@&#34;, error);
} else {
      NSLog(@&#34;THE DATA IS REAL: %@&#34;, data);
// this will be your actaul dictionary
      NSDictionary *jsonObject = ];

// Array of Timelines
      NSArray* timelineArray = jsonObject[@&#34;timelines&#34;];
      NSLog(@&#34;%@&#34;, timelineArray);

// Get Title from Timeline Dictionary
       if (timelineArray.count &gt; 0){
          NSDictionary *timelineDictionary = timelineArray.firstObject;
          NSLog(@&#34;Title: %@&#34;, timelineDictionary[@&#34;title&#34;]);
      }
}
</code></pre></p>
                                   
                                                <p style="font-size: 20px;">关于ios - 无法从 NSDictionary 和 JSON 获取值,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/33842901/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/33842901/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - 无法从 NSDictionary 和 JSON 获取值