使用Core Data生成的访问器的问题

时间:2013-09-21 04:44:45

标签: objective-c cocoa-touch core-data

所以我有两个实体,一个叫做“List”,一个叫做“Task”。他们每个人都有多个属性和一个关系。 List的关系称为“hasTasks”,它是一对多的关系。

这是为我生成的Task.h文件。

#import <Foundation/Foundation.h>
#import <CoreData/CoreData.h>

@class Task;

@interface List : NSManagedObject

@property (nonatomic, retain) NSString * name;
@property (nonatomic, retain) NSNumber * number;
@property (nonatomic, retain) NSNumber * tasks;
@property (nonatomic, retain) NSNumber * totalTime;
@property (nonatomic, retain) NSSet *hasTasks;
@end

@interface List (CoreDataGeneratedAccessors)

- (void)addHasTasksObject:(Task *)value;
- (void)removeHasTasksObject:(Task *)value;
- (void)addHasTasks:(NSSet *)values;
- (void)removeHasTasks:(NSSet *)values;

@end

现在,只要我按照

的方式打电话
[self.list addHasTasksObject:task];

我的应用程序在达到这一点时崩溃了。任何人都知道为什么会这样?如果您需要查看我的更多代码,请不要犹豫。提前谢谢!

2 个答案:

答案 0 :(得分:1)

请你发布你的核心数据添加对象方法。让我看看那个方法。试试这个..

- (void)addButtonClicked:(id)sender

{

    if (![nameField.text isEqualToString:@""])

    {

    AppDelegate *appDelegate = (AppDelegate *) [UIApplication sharedApplication].delegate;

    ///Entity declaration....

        CountryNames *country = (CountryNames *) [NSEntityDescription insertNewObjectForEntityForName:@"CountryNames"
                                        inManagedObjectContext:appDelegate.managedObjectContext];
        ///take a array for relation ship atribute...
        for (int i = 0; i < citiesArray.count; i++)
        {   ///atribute declaration...
            CityNames *citiesNames = (CityNames *) [NSEntityDescription insertNewObjectForEntityForName:@"CityNames"
                                        inManagedObjectContext:appDelegate.managedObjectContext];

            [country addRelationtocitiesObject:citiesNames];

            citiesNames.cityName = [citiesArray objectAtIndex:i];
            NSLog(@"%@",citiesNames.cityName);

            NSError *error;

            if (![appDelegate.managedObjectContext save:&error]) {}

        }

        country.name = nameField.text;

        NSError *error;

        if (![appDelegate.managedObjectContext save:&error]) {}
        //  ListOfCountryDetails *viewList=[[ListOfCountryDetails alloc]init];
        [self.navigationController popToRootViewControllerAnimated:YES];
    }
}

答案 1 :(得分:1)

我有同样的问题,我在.xcdatamodeld文件中修复了它。我不小心为关系选择了有序排列复选框,而没有重新生成NSManagedObject类。取消选中此框并重新构建为我解决了这个问题。如果仍有问题,请尝试重新生成NSManagedObject类。