テーブル
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;
}