使用 RaptureXML 行计数返回错误的数字

2024-01-16

我目前正在使用 Rapture XML 从 url 中提取数据以显示在表视图中。我已经设法获取我需要的每个字符串并将其添加到我的数组中,如下所示:

- (void)loadURL {

RXMLElement *rootXML = [RXMLElement elementFromURL:[NSURL URLWithString:@"http://api.somexml.com/xml"]];

NSLog(@"%@ %@", rootXML.tag, [rootXML attribute:@"totalEntries"]); 
[rootXML iterateWithRootXPath:@"//event" usingBlock:^(RXMLElement *event) {
    // NSLog(@"Event - URI: %@", [event attribute:@"uri"]);
    // NSLog(@"Event - Venue: %@", [event attribute:@"displayName"]);
    // NSLog(@"Event - Type: %@", [event attribute:@"type"]);

    [rootXML iterateWithRootXPath:@"//location" usingBlock: ^(RXMLElement *location) {
        // NSLog(@"Location - City: %@",[location attribute:@"city"]);
        // NSLog(@"Location - Latitude : %@",[location attribute:@"lat"]);
        // NSLog(@"Location - Longitude: %@",[location attribute:@"lng"]);

        [rootXML iterateWithRootXPath:@"//start" usingBlock:^(RXMLElement *start) {
            // NSLog(@"Start - Time: %@",[start attribute:@"time"]);
            // NSLog(@"Start - Date: %@",[start attribute:@"date"]);

            [rootXML iterateWithRootXPath:@"//performance" usingBlock:^(RXMLElement *performance) {
                // NSLog(@"Performance - Artist: %@",[start attribute:@"displayName"]);

                [events addObject:[NSArray arrayWithObjects:
                                   [event attribute:@"uri"],
                                   [event attribute:@"displayName"],
                                   [event attribute:@"type"],
                                   [location attribute:@"city"],
                                   [location attribute:@"lat"],
                                   [location attribute:@"lng"],
                                   [start attribute:@"time"],
                                   [start attribute:@"date"],
                                   [performance attribute:@"displayName"],
                                   nil]];                
            }];

        }];


    }];



}];

}

问题是当我分配行数时,它返回一个很大的数字而不是 6。

 return [events count];

XML 文件如下所示:

<resultsPage totalEntries="6" perPage="50" page="1" status="ok">
<results>
<event uri="http://somexml.com/xml" popularity="0.863682" displayName="Radio 1's Hackney 
Weekend 2012" id="9234656" type="Festival" status="ok">
<location city="London, UK" lng="-0.128" lat="51.5078"/>
<series displayName="Radio 1's Hackney Weekend"/>
<end time="" date="2012-06-24" datetime=""/>
<start time="" date="2012-06-23" datetime=""/>
<performance displayName="Lucy Labeaux" billingIndex="5" id="23336188" billing="headline">
<artist uri="http://www.somexml.com/artistxml" displayName="Lucy Labeaux" id="1168415">
<identifier href="http://somexml.com.xml" mbid="4593d49a-7f67-46ba-9ec0-126bd676286f"/>
</artist>
</performance>

感谢您的帮助!

**

出现与我的数组对象相关的错误。

**

所以我通过不断运行代码发现了一些东西。如果你看下面,我将对象添加到数组中 3 次。

- (void)loadURL {

RXMLElement *rootXML = [RXMLElement elementFromURL:[NSURL URLWithString:@"http://somexml.com/xml"]];

NSLog(@"%@ %@", rootXML.tag, [rootXML attribute:@"totalEntries"]);

[rootXML iterateWithRootXPath:@"//event" usingBlock:^(RXMLElement *event) {

    [events addObject:[NSArray arrayWithObjects:
                       [event attribute:@"uri"],
                       [event attribute:@"displayName"],
                       [event attribute:@"type"], nil]];
 }];

[rootXML iterateWithRootXPath:@"//location" usingBlock: ^(RXMLElement *location) {

    [events addObject:[NSArray arrayWithObjects:
                       [location attribute:@"city"],
                       [location attribute:@"lat"],
                       [location attribute:@"lng"],
                       nil]]; 
}];    

[rootXML iterateWithRootXPath:@"//start" usingBlock:^(RXMLElement *start) {

    [events addObject:[NSArray arrayWithObjects:
                       [start attribute:@"time"],
                       [start attribute:@"date"],
                       nil]]; 
}];

}

现在,当我调用我的对象以便将它们链接到界面时,我执行了以下操作:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
EventsCell *cell = (EventsCell *)[tableView dequeueReusableCellWithIdentifier:@"EventsCell"];

cell.venueLabel.text = [NSString stringWithFormat:@"%@",[[events objectAtIndex:indexPath.row] objectAtIndex:2]];

return cell;

}

我意识到,它不是在索引处创建总共 8 个对象,而是只创建 3 个。每次我添加新对象时,它都会将其添加到这 3 个索引中。例如,如果我将地点标签分配给 objectAtIndex 2,我不仅会得到 6 行,其中标签显示类型,还会得到另外 6 行显示时间。

这就是我的 viewDidLoad 的样子:

- (void)viewDidLoad
{
[super viewDidLoad];

self.events = [[NSMutableArray alloc] init];

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
    [self loadURL];

    dispatch_async(dispatch_get_main_queue(), ^{
        [self.tableView reloadData];
    });
});

}

看到没有人回答这个问题作为“答案”,而是在评论中留下了答案,我将接受这个作为答案。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 RaptureXML 行计数返回错误的数字 的相关文章

  • Sierra 更新后无法针对 iOS 10 进行编译

    我有一个今年八月生成的证书和配置文件 它们在 Apple 开发者门户中均有效 未过期 当我打开以 8 3 为目标的项目时 出现以下错误 No certificate matching iPhone Developer My Name ABC
  • 在 iPad 上运行时,不会触发 Mobile Safari 中即将发生的选项卡切换的 Pagehide 事件

    众所周知 Mobile Safari 在以下情况下会暂停网页上的 Javascript 执行 您切换到不同的浏览器选项卡 切换到不同的 iOS 应用程序 例如 当您接到来电时 手机应用程序 您可以订阅窗口 页面隐藏 and 页面展示 事件来
  • iOS 7 MapKit 崩溃:[VKRasterOverlayTileSource invalidateRect:level:] 中的 EXC_BAD_ACCESS

    我仅在 iOS 7 上遇到无法重现的崩溃 我大量使用 MKOverlayRenderer 在地图上绘制形状 iOS 6 上不会发生此崩溃 任何与此相关的想法都会有用 Exception Type EXC BAD ACCESS Code KE
  • iOS 7 键盘颜色闪烁

    在 iOS7 中 我将界面生成器中 UITextField 的键盘设置为深色样式 但是 每当我单击文本字段时 键盘最初显示为浅色 然后再转到深色样式 我怎样才能拥有它不这样做吗 这是iOS 7中的一个错误 我一直在处理同样的问题 它已在 i
  • 检测 SFSafariViewController 中的 URL 更改

    我有一个 SFSafariViewController 当用户点击我的应用程序中的链接时 它会打开 我需要检测 URL 何时更改 这样当它更改时 应用程序会显示警报 我们如何检测 SFSafariViewController 中的 URL
  • 将 NSOperation 子类化为并发且可取消

    我无法找到有关如何子类化的良好文档NSOperation并发并支持取消 我阅读了苹果文档 但找不到 官方 示例 这是我的源代码 synthesize isExecuting isExecuting synthesize isFinished
  • 将 Java 对象图保存为 XML 文件

    将任意 Java 对象图保存为 XML 文件 并能够在以后重新水合对象 的最简单易用的技术是什么 这里最简单的方法是序列化对象图 Java 1 4 内置了对 XML 序列化的支持 我成功使用的一个解决方案是 XStream http x s
  • 按钮图像未显示在 UItextfield 的 rightView 中

    我创建了一个按钮图像 并使用 Sa wift 将其放置在 UITextField 密码 的 rightView 上 我想在密码字段中创建切换按钮隐藏 显示安全文本 右视图中显示的图像 Code func passwordToggleButt
  • 与在后台运行应用程序的一台设备进行多点连接

    我想使用多点连接框架连接 2 台设备 其中一台设备在后台运行应用程序 就像 Firechat 一样 我无法确认这是否有效 我已将其安装在 iPhone 5S 和 4 上 但是他们只是找不到彼此 但我在某处读过这有效 实现这一目标的最佳方法是
  • 在 Interface Builder 中启用/禁用 NSLayoutConstraints

    NSLayoutConstraint in iOS 8 0 has a BOOL属性称为active这使得动态禁用 启用所述布局约束变得容易 要为视图控制器创建第二个布局集 然后我可以以编程方式启用 禁用它 通过IBOutletCollec
  • UIFont fontWithName:仅限于每个系列加载 2 个变体

    这个问题与带有自定义字体的 UILabel 显示 错误 自定义字体 https stackoverflow com questions 4622956 uilabel with custom font displays wrong cust
  • UITableView 中的 iPhone 动态 UIButton

    我正在为每个单元格行创建一个按钮UITableView 该按钮充当将所选行添加为 收藏夹 的开关NSUserDefaults 我的问题是 每当我按下此按钮时 就会在旧按钮之上绘制一个新按钮 我如何正确释放 重用它 这就是我的cellForR
  • 获取 iOS Swift 中 UIViewController 的所有列表

    有没有办法获取 iOS Swift 项目中的所有 UIViewController 我想获取所有 UIViewController 的数组并检查特定的 UIViewController 是否存在 我必须找到项目中是否存在特定的 UIView
  • 如何从静态图像中读取二维码

    我知道你可以使用AVFoundation使用设备的摄像头扫描 QR 码 现在问题来了 我该如何从静态中做到这一点UIImage object Neimsz 的 Swift 4 版本answer https stackoverflow com
  • 如何在viewDidAppear中给UIView添加动画?

    我尝试向 viewDidLoad 和 viewDidAppear 添加动画 但它不起作用 void viewDidAppear BOOL animated UIView beginAnimations transition context
  • iTunes connect 不允许输入多行描述

    我刚刚向 App Store 提交了我的第一个应用程序 但 iTunes Connect 中的描述字段存在问题 它不允许我输入多行值 我已经尝试了一切 从不同的编辑器复制粘贴 手动输入等 如果有一行 例如 Hello world 则保存成功
  • cllocation 和 mkreversegeocoder

    我尝试使用 cllocation 和 mkreversegeocoder 检索城市名称 在我的 viewdidload 方法中 我是 cllocationmanager self locManager CLLocationManager a
  • 由带有换行符的 DOMDocument 生成的 XML

    我正在使用 PHP DOMDocument 创建 XML 文件 并且这些 XML 文件不能包含换行符 但是当我使用该方法时 保存 XML 生成的 XML 在定义和初始标记之间有一个换行符 如下所示
  • AVAudioPlayer 重置当前播放的声音并从头开始播放

    我在使用 AVAudioPlayer 时遇到问题 我想重置当前正在播放的播放器并再次播放 我尝试以下但没有运气 声音播放一次 但第二次我选择按钮时它会停止声音 第三次再次启动声音 Stop the player and restart it
  • 如何模拟应用程序在后台被杀死?

    我试图验证我的应用程序 App1 在启动另一个应用程序 App2 后被系统关闭时行为是否正确 有什么方法可以模拟或强制这种行为吗 在 App2 运行时告诉模拟器模拟内存警告不会执行任何操作 直到 App1 返回前台为止 从调试器中杀死 Ap

随机推荐

  • 创建一个对象,其类型在字符串参数中

    我有一个 TreeView 其中包含节点 当用户单击某个节点时 应创建并显示相应的 CrystalReport 文档 例如 我的节点名称是 PeriodReport1 PeriodReport2 PeriodReport3 我的 Cryst
  • 无法找到并单击条件条款按钮

    我是 pupeeteer 的新手 首先我要做的是加载页面并单击按钮 但是 它无法找到该元素 我认为这是因为我需要找到父元素或父元素的父元素
  • Asp.net Mvc 4 和 Web Api 中的路由

    我可以同时使用以下两个路由规则吗 config Routes MapHttpRoute name ActionApi routeTemplate api controller action id defaults new id RouteP
  • IE11 中奇怪的 @font-face 问题(仅在您检查开发人员工具中的元素后才呈现)

    我有一些网络字体可以在除 IE11 之外的所有浏览器中正常工作 奇怪的是 如果你进入这个页面 然后使用 IE11 开发人员工具检查 功能 要点 突然所有字体都可以工作了 有任何想法吗 font face font family Helvet
  • POSIX“tee”命令如何工作?

    tee newOutputFile lt existingInputFile gt newOutputFile2 究竟会怎样tee接受论点 会是这样吗 Tee将首先处理newOutputFile lt existingInputFile所以
  • CSS3连续旋转动画(就像加载日晷)

    我正在尝试使用 PNG 和 CSS3 动画来复制 Apple 风格的活动指示器 日晷加载图标 我让图像旋转并连续进行 但动画完成后在进行下一次旋转之前似乎有延迟 webkit keyframes rotate from webkit tra
  • JfreeChart 中的自动缩放 Y 轴

    我在用JFreeChart在我的 Java 应用程序中创建蜡烛图 然而 我的图表最终看起来像这样 http imageshack us photo my images 69 capturebhx png http imageshack us
  • 出现分段错误

    我看到很多关于出现分段错误在SO中的C程序中 我认为参考这里的内容会很棒 这是一个涉及某些导致分段错误的情况的问题 我的答案发布在下面 正如一些答案中所写 所有情况下的行为都是未定义的 尽管很多人都将他们视为分段故障 所以这个问题是关于是什
  • 如何有条件地使用“平面图”运算符? (角度2/rxjs)

    我想要实现的是有条件地运行一系列可观察的结果 return observable map response gt response flatmap response1 gt observable1 response1 flatmap res
  • 找不到符号 if 语句错误

    我一直在编写一个小程序来娱乐 但我收到了这个错误 Compilation error time 0 11 memory 380672 signal 0Main java 22 error cannot find symbol string
  • 从列表中选择 5 个不同的元素?

    从 python 列表中选择 5 个不同元素并将它们添加到新列表中的最佳方法是什么 谢谢您的帮助 假设您希望随机选择它们并且new list已经定义了 import random new list random sample old lis
  • 如何实现隐式方法的中间类型?

    假设我想提供方法foo在现有类型上A在我的控制之外 据我所知 在 Scala 中执行此操作的规范方法是实现从A到某种实现的类型foo 现在我基本上看到两个选择 为此目的定义一个单独的 甚至可能是隐藏的类 protected class Fo
  • 当用户拒绝地理定位服务时,我会收到拒绝事件吗?

    我的意思是 如果我在网页上有一个按钮 当用户单击该按钮时 然后就可以获取用户的地理位置信息 但在此之前 浏览器会询问用户是否接受使用地理定位服务 如果用户拒绝地理定位服务 我可以获得拒绝事件吗 Yes Example navigator g
  • 如何通过nodejs实现APNS通知?

    现在有人有一个很好的 npm 模块来实现 Apple PUSH 通知吗 一个简单的例子就很好了 我找到的解决方案如下 它使用apn module var apn require apn var ca entrust 2048 ca cer
  • 将一个函数中的可变参数传递给 D 中的另一个函数

    我有一个可变的 D 风格函数foo format 这是一个包装器writefln 我想做这样的事情 foo format lt gt writefln format 本质上 将省略号参数传递给 writefln 我知道这在 C C 中并不容
  • 在 Android KitKat 中接收彩信

    所以这个视频Android 4 4 短信 API http www youtube com watch v mdq0R2WQssQ DevBytes 解释了 KitKat 中 SMS API 的最新变化 他们还提供了示例项目的链接 http
  • NSURLConnection sendAsynchronousRequest:queue:completionHandler:连续发出多个请求?

    我一直在使用NSURLConnection s sendAsynchronousRequest queue completionHandler 方法很棒 但是 我现在需要连续发出多个请求 我怎样才能在仍然使用这个伟大的异步方法的同时做到这一
  • 将整型转换为枚举:函数式转换与初始化

    假设有一个这样的枚举 enum foo int first second 然后我按如下方式使用它 foo f 1 error cannot initialize a variable of type foo with an rvalue o
  • 在不同主机上预编译具有相同摘要的资产

    是否可以使用相同的摘要在不同主机 流量路由 上编译资产 例如 如果我的 Rails 3 2 应用程序部署到 2 个不同的主机 host1 和 host2 我想要application css在具有相同摘要的主机 1 和主机 2 上appli
  • 使用 RaptureXML 行计数返回错误的数字

    我目前正在使用 Rapture XML 从 url 中提取数据以显示在表视图中 我已经设法获取我需要的每个字符串并将其添加到我的数组中 如下所示 void loadURL RXMLElement rootXML RXMLElement el