添加对包含XML文件中数据的应用程序的搜索

时间:2014-06-11 11:03:02

标签: ios objective-c

我有一个应用程序将其数据保存在XML文件中。该文件包含元素和子元素,大约300个实体。请看一下该文件的一部分:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<root>
    <Kremlin>Кремль и Красная площадь<place>
            <name>Московский кремль</name>
            <description>Моско́вский Кре́мль — древнейшая часть Москвы, главный общественно-политический, духовно-религиозный и историко-художественный комплекс города, официальная резиденция Президента Российской Федерации. Расположен на высоком левом берегу Москвы-реки — Боровицком холме, при впадении в неё р. Неглинной. В плане Кремль — неправильный треугольник площадью 27,5 га. Южная стена обращена к Москве-реке, северо-западная — к Александровскому саду, восточная — к Красной площади. http://ru.wikipedia.org/wiki/Московский_Кремль</description>
            <webpage>http://ru.wikipedia.org/wiki/Московский_Кремль</webpage>
            <latitude>55.75212</latitude>
            <longitude>37.617665</longitude>
            <imageCell>https://dl.dropbox.com/s/0o6h7bmn1muj7oz/MKCell.jpg</imageCell>
            <imageFirst>https://dl.dropbox.com/s/9bsvnfccxy0s8rn/MK1.jpg</imageFirst>
            <imageSecond>https://dl.dropbox.com/s/jq5gv1a58qg4llx/MK2.jpeg</imageSecond>
            <imageThird>https://dl.dropbox.com/s/5vvt4k64oj47f42/MK3.jpg</imageThird>
            <imageFourth>https://dl.dropbox.com/s/jruja8o4iwf8r55/MK4.jpg</imageFourth>
        </place>
        <place>
            <name>Спасская башня</name>
            <description>Спа́сская башня (ранее — Фроло́вская башня) — выходящая на Красную площадь одна из 20 башен Московского Кремля. В башне расположены главные ворота Кремля — Спасские, в шатре башни установлены знаменитые часы — куранты.</description>
            <webpage>http://ru.wikipedia.org/wiki/Спасская_башня</webpage>
            <latitude>55.752696</latitude>
            <longitude>37.621672</longitude>
            <imageCell>https://dl.dropbox.com/s/sjpqthepnqxfr0r/SBCell.jpg</imageCell>
            <imageFirst>https://dl.dropbox.com/s/fch0kvr8ltzx41i/SB1.jpg</imageFirst>
            <imageSecond>https://dl.dropbox.com/s/o6tiayev00z3uen/SB2.jpg</imageSecond>
            <imageThird>https://dl.dropbox.com/s/iy7cuw98fxq3cda/SB3.jpg</imageThird>
            <imageFourth>https://dl.dropbox.com/s/luephoe2e03njtu/SB4.jpg</imageFourth>
        </place>

我想要的是,实现一个搜索栏。当用户开始键入文本时,会出现具有该名称的实体。我的问题在于 - 我不知道如何实现这一点,当我发现“Кремль”为例时,我需要以某种方式传递有关子元素的信息。应该为该实体,描述和其他应用程序显示正确的图像,该图像存储在XML文件的子元素中。也许,有一种方法可以用NSDictionary做到这一点?

任何建议都将不胜感激,谢谢!

1 个答案:

答案 0 :(得分:1)

请注意,这可以通过几个步骤轻松完成。 首先 - 正确解析数据并创建字典数组。

第二 - 您应该使用像sqlite这样的本地数据库并以Blob数据类型保存所有图像(blob数据类型可以以NS数据的形式保存您的图像)。以下是您必须创建具有2列,一个名称和其他图像数据的表的技巧部分。即将所有图像数据存储在相应的图像名称前面,并在需要时从db中提取。

第三次 ** - 实施搜索栏。**现在您的整个数据已经被解析并存储在数组(或字典)中。例如,假设搜索栏中的用户类型&#34; krem&#34; ,应用代码搜索关键克里姆林宫并使用此克里姆林宫键搜索您的解析数据。从字典中找到合适的URL名称,并使用此URL名称从DB中提取图像(名称是我们在db中的字段)。

你可以轻松实现这个目标,但还有很多工作要做。试试这个......