ユーザーがピッカーから用語を選択し、NSDictionary を使用して plist ファイルに保存されているデータにアクセスして用語の定義を表示できるようにする UIPickerViewDelegate があります。また、ユーザーが用語とその定義を別の場所に電子メールで送信できるようにする MFMailComposeViewController もあります。
しかし、電子メールに入力するために適切にフォーマットされた用語と定義を取得できないようです。さまざまな「NSDictionary を NSString に変換する」ソリューションを調べましたが、必要なものを提供しているようには見えませんTerm = [dict objectForKey:@"Term"]
。
viewDidLoad の下には、次のものがあります。
NSString *path = [[NSBundle mainBundle] pathForResource:@"Glossary" ofType:@"plist"];
NSDictionary *dict = [[NSDictionary alloc] initWithContentsOfFile:path];
self.termArray = [dict objectForKey:@"Term"];
self.definitionArray = [dict objectForKey:@"Definition"];
私の pickerView コードにはこれが含まれています:
NSString *resultString = [[NSString alloc] initWithFormat:
@"%@",
[definitionArray objectAtIndex:row]];
definitionLabel.text = resultString;
NSString *termString = [[NSString alloc] initWithFormat:
@"%@",
[termArray objectAtIndex:row]];
showEmail のコードには次が含まれます。
int definitionIndex = [self.termPicker selectedRowInComponent:0];
NSString *emailTitle = [NSString stringWithFormat:@"Definition of %@", termLabel];
NSString *emailDefinition = [definitionArray objectAtIndex:definitionIndex];
NSString *messageBody = [NSString stringWithFormat:@"The definition of <B>%@</B> is:<P> <B>%@</B>", termLabel, emailDefinition];
MFMailComposeViewController *mc = [[MFMailComposeViewController alloc] init];
mc.mailComposeDelegate = self;
[mc setSubject:emailTitle];
[mc setMessageBody:messageBody isHTML:YES];
電子メールのタイトルとメッセージ本文を、ピッカーで選択した用語とそれに関連付けられた定義から取得したいと考えています。単純なフォーマットの問題に違いないと思いますが、わかりません。