JSON/XML解析iphone NSPredicate
问题描述:
我正在尝试创建一些使用xml或json显示一些内容的应用程序。JSON/XML解析iphone NSPredicate
我有很多“意见”,我想从她的ID中选择一个。
XML看起来像(我可以把JSON如果你想,但它是非常难读):
<?xml version="1.0" encoding="utf-8"?>
<views>
<view id="home" type="nav">
<title>Help</title>
<section id="1">
<title>Aide</title>
<item id="1" link="dev_mac">Dev Mac</item>
<item id="2" link="dev_iphone">Dev iPhone</item>
<item id="3" link="examples">Examples</item>
</section>
</view>
<view id="dev_mac" type="nav">
<nav_title>Help</nav_title>
<content_title>Dev Mac</content_title>
<text>balbalbalblablablalbalblalbal</text>
<section id="1">
<item id="1" link="lesson_1">Lesson 1</item>
<item id="2" link="download">Downlaod</item>
</section>
</view>
<view id="download" type="content">
<nav_title>Dev Mac</nav_title>
<title>Lesson 1</title>
<content_text>balblablalbalblalbalb</content_text>
<content_title>A. UIKit</content_title>
<content_text>UIKit is .....</content_text>
</view>
</views>
我有包含3的NSDictionary(3视图)的阵列。
我该如何选择正确的一个视图,由她的ID?
由于通过提前
BiB1
答
不能直接使用XML的NSPredicate
。你必须将XML(或JSON)解析为一些标准的可可容器(NSArray
等),然后在其上使用它。
你能够直接过滤XML的唯一方法是使用XPath之类的东西,尽管你必须下载到libxml才能做到这一点。
答
它应该工作 - 只要数据变量实际上是一个包含字典的键“ID”
NSArray *data = <your xml>
NSString *currentViewId = @"home";
NSArray *filterd = [data filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"(id == %@)", currentViewId]];
答
尝试重新格式化XML是plist数组(你可以使用xcodes的plist编辑器或卷你自己的)使用方法:
<plist version="1.0">
<array>
<dict>
<key>Title</key><string>Home</string>
<key>Image</key><string>Home.png</string>
</dict>
<dict>
<key>Title</key><string>Car</string>
<key>Image</key><string>Car.png</string>
</dict>
</array>
</plist
在.h文件中:
NSArray *Views_List;
在.m文件:
NSString *Views_DataPath = [[NSBundle mainBundle] pathForResource:@"nameOfYourPlist" ofType:@"plist"];
Views_List = [[NSArray alloc] initWithContentsOfFile:Views_DataPath];
然后访问每个字典:
[[Views_List objectAtIndex: 0] valueForKey:@"Title"];
在这个例子中(0)将返回 '家'
+0
id是否选择“父项”,不幸的是我不能使用objectAtIndex在视图以不同的顺序发送的情况下 – Mickael 2011-03-10 13:24:35
是的,我知道,我不想直接在XML使用NSPredicate。我的XML数据用XMLReader转换成NSDictionary。但我不知道如何使用NSPredicate从我的NSDictionary(或NSArray) – Mickael 2011-03-09 21:28:02