访问ios中@property的setMethod
经过几个小时的教程和谷歌搜索,我知道当我们在头文件中定义一个属性时,编译器会自动生成setter和getter这里是一个例子:
“example.h文件”
@property(strong,nonatomic) NSNumber *test;
example.m
[self.test setTest [@"3"]];
所以我想要的是访问此方法来检查方法声明,这就是我想要的原因
完整场景
@interface exampleController () { int example; }
//这里是一个实例变量,用于在运行应用程序时保存值,我从字典中获取此值,然后将示例变量的值保存到核心数据
这是实体类
exampleEntity.h
@property(strong,nonatomic) NSNumber *example;
exampleEntity.m
@dynamic example;
//因为实例变量是int,我们需要将它强制转换为NSNumber,所以我按照这个链接
[entry setExample : [NSNumber numberWithInt:example]];
最后在运行此代码后,我将进入此exception:
***由于未捕获的exception’NSInvalidArgumentException’而终止应用
完整代码
#import "viewController.h" @interface viewController () { int example; } - (void)viewDidLoad { gettingTheExampleValueFromDictionary(); } -(void)gettingTheExampleValueFromDictionary() { NSDictionary *dictionary = [NSJSONSerialization JSONObjectWithData:requestHandler options:0 error:&jsonParsingError]; example = [[dictionary objectForKey:@"exampleId"] intValue]; } - (IBAction)doneButton:(id)sender { [self insertDataToCoreData]; [self dismissSelf]; } -(void)insertDataToCoreData { CoreData *coreDataStack = [CoreData defaultStack]; ExampleEntity *entry = [NSEntityDescription insertNewObjectForEntityForName: @"ExampleEntity" inManagedObjectContext:coreDataStack.managedObjectContext]; [entry setExample :[NSNumber numberWithInt:example]]; // here we go into the error // [coreDataStack saveContext]; } @end // and if you ask me for entity class here is: #import @interface ReservationEntity : NSObject @property (nonatomic,strong) NSNumber *example; @end #import "exampleEntity.h" @implementation exampleEntity @dynamic example; @end // and if you ask me for core data here is the pic needed //
// the configuration of xcdatamodel
在你的情况下你应该改变:
@dynamic example;
至
@synthesize example;
或者只是删除代码行@dynamic示例。
因为@synthesize为属性生成getter和setter,而@dynamic意味着getter&setter是在运行时创建的(例如NSManagedObject的子类)