誰かが私を助けてくれることを願っています。私は iOS アプリ開発に非常に慣れていないので、実際に地元の学校でのキャリア デイ イベントのために何かをまとめようとしています。
その背景には、データを正確に処理して入力する学生の能力をテストできるようにしたいということがあります。
これをテストするには、iPad にアプリを展開して、日中に試してもらいたいと考えています。とてもシンプルなもの(と思います!)
これまでのところ、アプリを作成し、入力ボックスを配置してすべてリンクする方法を知っており、ボックスへの入力が次のようなコードでハードコードされた値に対して正しいことをテストする方法を考え出しました。
self.DealID = self.DealIDEntry.text;
NSString *Check1 = @"No";
NSString *DealIDString = self.DealID;
if ([DealIDString length] == 0) {
Check1 = @"No Deal ID Entered";
}
if([self.DealID isEqual: @"12345678"]) {
Check1 = @"Yes";
}
self.DealIDCheck.text = Check1;
私が欲しいのは、可能なDealIDのテーブルをそれぞれに5〜6ビットの関連データ(顧客、通貨など)を用意し、学生が取引IDを入力すると、うまくいけば正しい顧客、通貨などになることです。アプリは、plist 内の DealID の「ルックアップ」を実行し、顧客の値がその DealID に対して正しいことを確認することによって確認する必要があります。
私は辞書を使ってこれをやろうとしました:
NSBundle *bundle = [NSBundle mainBundle];
NSString *pListpath = [bundle pathForResource:@"TestTable" ofType:@"plist"];
NSDictionary *dict = [[NSDictionary alloc] initWithContentsOfFile:pListpath];
self.CustomerName = self.CustomerNameEntry.text;
NSString *Check2 = @"No";
NSDictionary *DealID = [dict valueForKey:self.DealID];
NSString *CustomerNameString = self.CustomerName;
if ([CustomerNameString length] == 0) {
Check2 = @"No Customer Name Entered";
}
if([self.CustomerName isEqual: [DealID objectForKey:@"CustomerName"]]) {
Check2 = @"Yes";
}
self.CustomerNameCheck.text = Check2;
悲しいことに、それは機能していません。plist を正しくロードする (またはロードされているかどうかをテストする) 方法がわからないか、単に間違ったことをしただけだと思います!
編集 2 - 以下の Matt のヘルプのおかげで、このコードを使用して plist をディレクトリのディレクトリとしてロードし、特定のサブディレクトリに関連するオブジェクトをクエリできます。ありがとう、マット!
//This loads the array of data
NSBundle* bundle = [NSBundle mainBundle];
NSString* plistPath = [bundle pathForResource:@"TestTable" ofType:@"plist"];
//Make large Dictionary
NSDictionary *TradeTable = [[NSDictionary alloc] initWithContentsOfFile:plistPath];
NSLog(@"The count: %i", [TradeTable count]);
//Create relevant sub directory
NSDictionary *query = [TradeTable valueForKey:@"12345678"];
NSLog(@"The count: %i", [query count]);
//Query that subdirectory for the object in question
NSString *name = [query objectForKey:@"CustomerName"];
NSLog(name);
興味のある人のために、私の plist は次のようになります。
<dict>
<key>12345678</key>
<dict>
<key>CustomerID</key>
<integer>98765</integer>
<key>CustomerName</key>
<string>BigBank</string>
<key>CustomerBank</key>
<string>LittleBank</string>
<key>AmountinCCY</key>
<integer>75000</integer>
<key>CCY</key>
<string>GBP</string>
<key>AmountinUSD</key>
<integer>115000</integer>
<key>Date</key>
<integer>1</integer>
<key>Points</key>
<integer>5</integer>
</dict>
<key>12345679</key>
<dict>
<key>CustomerID</key>
<integer>98754</integer>
<key>CustomerName</key>
<string>CarShop</string>
<key>CustomerBank</key>
<string>BigBank</string>
<key>AmountinCCY</key>
<integer>25123</integer>
<key>CCY</key>
<string>EUR</string>
<key>AmountinUSD</key>
<integer>27000</integer>
<key>Date</key>
<integer>0</integer>
<key>Points</key>
<integer>4</integer>
</dict>
</dict>
</plist>
できるだけ多くの情報を提供したかっただけです。
誰の助けにも感謝します。フィル