0

我想要实现的是以下。我有一个 MySQL 数据库,并在 PHP 脚本中使用 SimpleXML 将那里的条目转换为 XML。所以我有一个'id'、'department'、'name'、'tel'和一个'email'字段。PHP 将其解析为这个输出(不知道这是否是最合乎逻辑的输出,但似乎合法)(主唯一键 'id' 已被省略)

<?xml version="1.0" encoding="UTF-8" ?>
<entries>
<entry>
<department>DeptA</department>
<name>NameA</name>
<tel>0000-111111</tel>
<email>namea@abc.com</email>
</entry>
<entry>
<department>DeptB</department>
<name>NameB1</name>
<tel>0000-2222222</tel>
<email>nameb1@abc.com</email>
</entry>
<entry>
<department>DebtB</department>
<name>NameB2</name>
<tel>0000-2222223</tel>
<email>nameb2@abc.com</email>
</entry>

more entry

</entries>

所以我在 Xcode 中有三个视图。第一个视图 (MasterViewController) 应将部门报告为唯一值。在上面的 XML DebtA 和 DebtB 中。(更多在实际 XML 中)并在表格视图中列出它们。尝试使用 NSSlist *uniqueArray (等)执行此操作但没有成功。然后,当单击 MasterViewController 中的一个部门时,您将进入 DebtViewController,其中列出了在该特定部门工作的所有员工的姓名。因此对于应为 NameB1 和 NameB2 的 DebtB。(仅债务 A 名称 A)。最后一个视图是一个 DetailViewController,其中列出了在 DebtViewController 中单击的特定名称的详细信息。详细信息,例如姓名、电话和电子邮件。(也许当我掌握了它的窍门时的一张照片)

所以具体来说,问题是我已经为此苦苦挣扎了好几天,想知道我应该采取的最佳路线是什么。我目前使用的 XML 对我想要完成的任务有什么好处吗?在用 xcode 解析之前,我应该用 XML 将部门组合在一起吗?还是以后也可以这样做?如果是这样,请提出一些建议。

4

1 回答 1

0

您走在正确的轨道上-根据您要执行的操作,我建议将 xml 文件格式化为:

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE plist SYSTEM "file://localhost/System/Library/DTDs/PropertyList.dtd">

<plist version="1.0">

<dict>

   <key>DeptA</key>

         <array>

            <dict>

               <key>Name</key>

               <string>NameA</string>

               <key>tel</key>

               <string>0000-111111</string>

               <key>email</key>

               <string>namea@abc.com</string>

            </dict>

         </array>

   <key>DeptB</key>

         <array>

            <dict>

               <key>Name</key>

               <string>NameB1</string>

               <key>tel</key>

               <string>0000-222222</string>

               <key>email</key>

               <string>nameb1@abc.com</string>

            </dict>

            <dict>

               <key>Name</key>

               <string>NameB2</string>

               <key>tel</key>

               <string>0000-222223</string>

               <key>email</key>

               <string>nameb2@abc.com</string>

            </dict>

         </array>

</dict>

它比您到目前为止所获得的要复杂一些,但这允许您通过执行以下操作将文件的内容直接读取到 NSDictionary 对象中:

NSDictionary * departmentDictionary = [[NSDictionary alloc] initWithContentsOfFile:"/path/to/xml/file.xml"];

完成此操作后,您可以通过执行以下操作获取代表部门名称的字符串列表:

NSArray * departmentList = [departmentDictionary allKeys];

此行将为您提供 DeptB 中所有员工的列表:

NSArray * deptBEmployees = [departmentDictionary objectForKey:@"DeptB"];

员工列表以 NSDictionary 对象数组的形式返回,每个对象都存储了键 @"Name"、@"tel" 和 @"email" 的值。

正如您所看到的,它确实变得有点复杂,但相信我——一旦您掌握了窍门,存储和读取非常复杂的 xml 数据就变得非常容易。MacOS 甚至有一个属性列表编辑器,它提供了一个很好的界面来创建可以被 XCode 读取的这种类型的 xml 文件。

我推荐这个链接——当我学习做这类事情时,它对我很有帮助: https://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/PropertyLists/Introduction/Introduction。 html#//apple_ref/doc/uid/10000048-CJBGDEGD

于 2012-09-12T19:00:51.543 回答