0

テーブル

RoomOccupant < occupantid,relations(部屋, 連絡先)>

したがって、room と contact は coreData のエンティティです。room and contact から RoomOccupant への対多関係があります。部屋の占有関係を適切に追加するために、addvalue、removevalue、addobjects などを定義しました。

したがって、roomoccupant の作成中に、room と占有者の連絡先を設定しています。

occupant.room = room1, occupant.contact = contact1 のように、room1 と contact1 は coreData で作成されます。

しかし、'occupant.contact = contact1' ステートメントでクラッシュします。解決されればありがたいです。前もって感謝します。

コード:

-(BOOL) setChatRoomOccupant:(RoomOccupant*)occupant
{
    CDChatRoomOccupants* occupantExisted = [self getChatRoomOccupant:occupant.occupantid];
    CDObjectFactory* factory = [[MobileClient getMobileClient] getFactory];
    if (!occupantExisted) 
    {
        CDChatRoom* room = [self setChatRoom:occupant.room];
        CDContact* contact = [factory setContact:occupant.contact];

        CDChatRoomOccupants* newOccupant = [NSEntityDescription insertNewObjectForEntityForName:@"CDChatRoomOccupants" inManagedObjectContext:localContext];
        newOccupant.occupantid = occupant.occupantid;
        if (contact) {
            NSLog(@"contact details:%@,%@",contact.phoneNumber,contact.firstName);
            newOccupant.contact = contact;
        }
        if (room) {
            newOccupant.room = room;
        }
        NSError* error = nil;
        if (![localContext save:&error]) {
            return true;
        }
    }
    else{
        occupantExisted.occupantid = occupant.occupantid;
        occupantExisted.room = [self setChatRoom:occupant.room];
        occupantExisted.contact = [factory setContact:occupant.contact];
        NSError* error = nil;
        if (![localContext save:&error]) {
            return true;
        }
    }
    return false;
}
4

0 に答える 0