【问题标题】:Problems using Core Data generated accessors使用 Core Data 生成的访问器的问题
【发布时间】:2013-09-26 13:30:01
【问题描述】:

所以我有两个实体,一个叫做“列表”,一个叫做“任务”。它们中的每一个都有多个属性和一个关系。 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];

我的应用程序在达到这一点时崩溃。有人知道这是为什么吗?如果您需要查看更多我的代码,请随时询问。提前致谢!

【问题讨论】:

  • 崩溃时的错误信息是什么?
  • 没有错误信息
  • 嗨,你能找到解决办法吗?

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


【解决方案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];
    }
}

【讨论】:

  • 与 [self.list addHasTasksObject:task] 中的一样;?它的实现是动态生成的,它没有在我的代码中显示。
  • 表示它保存在数据库中而不显示在您的应用程序中?
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-21
    • 1970-01-01
    • 2020-12-02
    • 1970-01-01
    • 2014-08-05
    • 1970-01-01
    相关资源
    最近更新 更多