0

ここに画像の説明を入力

連絡先テーブルに、iPhone のアドレス帳から選択した連絡先の情報を挿入します。

連絡先の名前と番号 (0 番目のインデックス) を保存し、さらに 2 つのフィールド twilio 番号と bool チェックをこのコードで追加します。

AppDelegate *appDelegate =
[[UIApplication sharedApplication] delegate];

NSManagedObjectContext *context =
[appDelegate managedObjectContext];

Contacts * newContact = [NSEntityDescription
                         insertNewObjectForEntityForName:@"Contacts"
                         inManagedObjectContext:context];

newContact.name = name;
newContact.number = phone;
newContact.isEligible = isEligible;
newContact.twilionumber = tempTwilioNumber;

シナリオは、配列形式の他のすべての電話番号 (0 番目のインデックスを除く) を選択し、それらを属性電話番号を持つ ContactDetail テーブルに保存することです。場合によっては、1 つの連絡先が他の複数の番号を持つことができます。

連絡先テーブルの1つのエントリに対して、その配列をcontactDetailテーブルに挿入するにはどうすればよいですか??

4

2 に答える 2

0

ContactDetailの関係は、1対1ではなく、1対多である必要があります。また、ContactDetailに「index」プロパティを追加する必要があります。このようにして、連絡先インスタンスの詳細をフェッチするときに(詳細はNSSetの形式になります)、インデックスで並べ替えることができます

于 2013-02-04T17:56:07.767 に答える
0

次のコードだけでうまくいきました。

  AppDelegate *appDelegate = [[UIApplication sharedApplication] delegate];

  NSManagedObjectContext *context = [appDelegate managedObjectContext];

  Contacts * newContact = [NSEntityDescription
                         insertNewObjectForEntityForName:@"Contacts"
                         inManagedObjectContext:context];

newContact.name = name;
newContact.number = phone;
newContact.isEligible = isEligible;
newContact.twilionumber = tempTwilioNumber;


for (int i=1; i<otherContactNumbersArray.count; i++)
{
    ContactDetail * newContactDetail = [NSEntityDescription
                                        insertNewObjectForEntityForName:@"ContactDetail"
                                        inManagedObjectContext:context];

    newContactDetail.phoneNumber = (__bridge_transfer NSString*)ABMultiValueCopyValueAtIndex(phoneNumbers, i);
    newContactDetail.contactInfo = newContact;
}

NSError *myError;
[context save:&myError];

解決策を早期に見つけることができるように、質問の評価を上げることすらしなかった30人の訪問者に感謝します.... :)

于 2013-02-06T14:03:08.107 に答える