세 가지보기 HomeViewController
, AddViewController
및 AddCategoryViewController
의 간단한 앱이 있습니다.핵심 데이터 관계 문제
내 목표는 WMDGCategory
객체에 의해 정의 된 섹션 아래에 그룹화, HomeViewController
에있는 tableview에 WMDGActivity
개체를 표시 할 수 있습니다 :
내 데이터 모델은이 같은 관계로 두 개의 엔티티가 있습니다.
새로운 WMDGCategory
객체는 AddCategoryViewController
에서 텍스트 필드를 통해 추가되는 새로운 WMDGActivity
객체는 AddViewController
에서 텍스트 필드를 통해 추가됩니다.
내 문제는 취소하거나 보조보기 중 하나에 저장하면 응용 프로그램이 충돌한다는 것입니다. 오류 코드는 변함입니다 :
reason: '[<WMDGActivity 0x8a54830> valueForUndefinedKey:]: the entity WMDGActivity is not key value coding-compliant for the key "WMDGCategory".'
나는 또한 내가 WMDGCategory 개체의 이름이 포함 된 선택기 휠 롤이 때마다 참조 : 실제로
data: {
activities = "<relationship fault: 0x8db1600 'activities'>";
name = Pastimes;
을, 또 다른 신비 앱이 분명히이 절약된다는 점이다 사고 전의 물건. 코드를 단계별로 시도했지만 아직 해결 방법을 찾지 못했습니다. 내 엔티티가 설정되는 방식에 문제가 있거나 해당 코드와 상호 작용하는 방식에 문제가 있다고 생각합니다. 모두 AddViewController
에 대한
HomeViewController에서 (위임 및 AddCategoryViewController
: AddCategoryViewController에서
#pragma mark AddViewControllerDelegate stuff
-(void) addViewControllerDidSave
{
NSManagedObjectContext *localContext = [NSManagedObjectContext MR_contextForCurrentThread];
[localContext MR_saveToPersistentStoreAndWait];
[self.navigationController dismissViewControllerAnimated:YES completion:nil];
[self refreshData];
}
-(void) addViewControllerDidCancel:(WMDGActivity *) activityToDelete
{
[activityToDelete MR_deleteEntity];
[self.navigationController dismissViewControllerAnimated:YES completion:nil];
[self refreshData];
}
#pragma mark AddCatControllerDelegate stuff
-(void) addCatControllerDidSave
{
NSManagedObjectContext *localContext = [NSManagedObjectContext MR_contextForCurrentThread];
[localContext MR_saveToPersistentStoreAndWait];
[self.navigationController dismissViewControllerAnimated:YES completion:nil];
[self refreshData];
}
-(void) addCatControllerDidCancel:(WMDGCategory *) categoryToDelete
{
[categoryToDelete MR_deleteEntity];
[self.navigationController dismissViewControllerAnimated:YES completion:nil];
[self refreshData];
}
:
- (IBAction)saveButton:(UIBarButtonItem *)sender
{
if (self.catTextField.text.length > 0)
{
self.thisCategory.name = self.catTextField.text;
}
[self.delegate addCatControllerDidSave];
}
- (IBAction)cancelButton:(UIBarButtonItem *)sender
{
[self.delegate addCatControllerDidCancel:self.thisCategory];
}
그리고 AddViewController에서 여기
내가 관련 코드를 생각하는 것입니다 :- (IBAction)saveButton:(UIBarButtonItem *)sender
{
if (self.activityField.text.length > 0)
{
if (self.categoryLabel.text.length < 1)
{
self.thisCategory.name = @"Uncategorized";
// self.thisActivity.activityName = self.activityField.text;
// [self.delegate addActivityViewControllerDidSave];
}
else
{
self.thisCategory.name = self.categoryLabel.text;
self.thisActivity.name = self.activityField.text;
NSLog(@"Category name is %@", self.thisCategory.name);
NSLog(@"Activity name is %@", self.thisActivity.name);
}
[self.delegate addViewControllerDidSave];
}
else
{
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"No activity entered"
message:@"Please enter a new activity or Cancel"
delegate:nil
cancelButtonTitle:@"OK"
otherButtonTitles:nil];
[alert show];
}
}
- (IBAction)cancelButton:(UIBarButtonItem *)sender
{
[self.delegate addViewControllerDidCancel:self.thisActivity];
}
누구든지 내가 뭘 잘못하고 있는지 보여 주실 수 있습니까?
응답 해 주셔서 감사합니다. 나는 당신의 제안을 시도해 보았고 아마도 다른 두 가지 변화로 너무 멀리 갔다. 이제는 분명히 관련이있는 새로운 문제로 자신을 발견하지만 원래 질문을 편집하거나 새 질문을 시작할 지 여부를 모르겠다. 글쎄요, 여기에 오류 스택이 있습니다. *** 데이터 : { category = nil; name = Programming; toCategory = nil; *** – rattletrap99
죄송합니다. 그 나머지 부분은 다음과 같습니다 : – rattletrap99
***})는 섹션 이름 키 경로 'toCategory.name'에 대해 nil 값을 반환했습니다. 개체는 이름이 지정되지 않은 섹션에 배치됩니다. *** Danged send-on-return! – rattletrap99