안녕하세요 여러분. 나는 ios-app를 쓰고 있는데, severals 서브 뷰가 포함되어있다. 서브 뷰는 버튼 하나만 누르면 개별적으로 생성 될 수있다. 모든 하위보기에는 '그룹'인스턴스가 있으며, 이는 핵심 데이터를 통해 저장된 엔터티입니다. '그룹'은 '연락처'와 일대일 관계입니다. 연락처가 하위보기로 끌면 주어진 '그룹'의 핵심 데이터에 저장됩니다. 이것은 정확히 3 번 정확하게 작동합니다. 매 4 시간마다 연락처가 다른 하위보기로 끌려 가고있는 중입니다. 앱이 충돌합니다. 여기 ios - 코어 데이터 : "엔티티 이름이 nil이 아니어야합니다"가 발생하는 이유는 무엇입니까?
코드입니다 :- (void)fetchContacts {
if(personRecordIDsArray==nil) {
personRecordIDsArray = [[NSMutableArray alloc] init];
NSFetchRequest *request = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Contact" inManagedObjectContext:managedObjectContext];
[request setEntity:entity];
[entity release];
NSError *error = nil;
NSMutableArray *mutableFetchResults = [[[managedObjectContext executeFetchRequest:request error:&error] mutableCopy] autorelease];
if (mutableFetchResults == nil) {
// Handle the error.
}
[error release];
[request release];
for (Contact *contact in mutableFetchResults) {
if(contact.belongsToGroup == group) {
[personRecordIDsArray addObject:contact.recordId];
}
}
}
NSLog(@"%d", [personRecordIDsArray count]);}
- (void)addContactsToGroup:(NSArray*)arrayOfPeople {
[self fetchContacts];
for(int i = 0; i<[arrayOfPeople count]; i++) {
ABRecordRef person = [arrayOfPeople objectAtIndex:i];
NSNumber *personRecordId = [NSNumber numberWithInteger:ABRecordGetRecordID(person)];
if(![self groupContainsContactWithRecordID:personRecordId]) {
NSString *compositeName = (NSString *)ABRecordCopyCompositeName(person);
//Here is when the error occurs:
Contact *contact = (Contact*)[NSEntityDescription insertNewObjectForEntityForName:@"Contact" inManagedObjectContext:managedObjectContext];
contact.compositeName = compositeName;
contact.recordId = personRecordId;
contact.belongsToGroup = group;
NSError *error = nil;
if (![managedObjectContext save:&error]) {
NSLog(@"Error in addContactsToGroup!");}
[error release];
[personRecordIDsArray addObject:personRecordId];
}
}}
오류가 말한다 그룹에 연락처 추가하려고 :
2011-04-10 16 : 16 : 207 : 796 36.152에서는 TestApp를 ] * 캐치되지 않은 예외 'NSInvalidArgumentException'으로 인해 앱 종료 중, 이유 : '엔티티 이름이 nil이 아니어야합니다.'
나는 정말로 한동안 놀았고 또한 인터넷에서 비슷한 것을 찾을 수 없었다. 그것은 오류가 항상 연락처가 다른 하위보기에 추가됩니다 넷째 발생합니다 재밌 네요. 누구든지이 문제를 어떻게 해결할 수 있을지에 대한 아이디어가 있습니까?
#0 0x956e2156 in __kill
#1 0x956e2148 in kill$UNIX2003
#2 0x95774899 in raise
#3 0x9578a9b8 in abort
#4 0x91de4fda in __gnu_cxx::__verbose_terminate_handler
#5 0x0141c4e7 in _objc_terminate
#6 0x91de317a in __cxxabiv1::__terminate
#7 0x91de31ba in std::terminate
#8 0x91de32b8 in __cxa_throw
#9 0x0141c635 in objc_exception_throw
#10 0x00ce1486 in +[NSManagedObject(_PFDynamicAccessorsAndPropertySupport) classForEntity:]
#11 0x00ce11f6 in _PFFastEntityClass
#12 0x00d06e73 in +[NSEntityDescription insertNewObjectForEntityForName:inManagedObjectContext:]
#13 0x00009a02 in -[GroupViewController addContactsToGroup:] at GroupViewController.m:152
#14 0x00002f31 in -[GrouperViewController dragingWillEnd:forContacts:atPosition:] at GrouperViewController.m:98
#15 0x0000cbb8 in -[ContactsTableViewController longPressOnView:] at ContactsTableViewController.m:65
그건 당황입니다. – TechZen
이상한! 당신은'insertNewEntityForName' 메쏘드에 캐스트 (Contact *) 할 수 있습니까? 나는 그것이 이전에 그런 방식으로 만들어지는 것을 보지 못했습니다. 그리고 심지어 그것은 일종의 의미를 지니고 있습니다, 당신은 정말로 그것을 필요로하지 않습니다. 어떤 차이가 있는지 확인하십시오. – Rog