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には3つのビューがあります。First View(MasterViewController)は、部門を一意の値として報告する必要があります。上記のXMLDebtAおよびDebtB。(実際のXMLで詳しく説明します)そしてそれらをテーブルビューにリストします。NSSlist * uniqueArray(etc)を使用してこれを実行しようとしましたが、成功しませんでした。次に、MasterViewControllerの部門をクリックすると、その特定の部門で働いている従業員のすべての名前を一覧表示するDebtViewControllerに移動します。したがって、DebtBの場合、NameB1とNameB2である必要があります。(DebtAのみNameA)。最後のビューはDetailViewControllerであり、DebtViewControllerでクリックされた特定の名前の詳細情報が一覧表示されます。名前、電話番号、メールアドレスなどの詳細。(たぶん、コツをつかんだときの写真)

具体的には、かなりの数日間これに苦労していて、最善のルートを知りたいと思っています。現在使用しているXMLは、達成したいタスクに適していますか?xcodeで解析する前に、部門をXMLでグループ化する必要がありますか?またはそれは後で同様に行うことができますか?もしそうなら、plsはいくつかのポインタを提案します。

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 に答える