自定义类中的Objective C @property访问器?

时间:2014-05-10 01:01:06

标签: ios objective-c accessor

我有一个名为MAAssignment的自定义NSObject。它基本上是一种数据类型,具有多个@properties和一个自定义init方法:

@property (nonatomic, strong) NSDate *date;
@property (nonatomic, strong) NSString *assignmentName;
@property (nonatomic, strong) NSNumber *totalPoints;
@property (nonatomic, strong) NSNumber *recievedPoints;
@property (nonatomic, strong) NSNumber *classAverage;
@property (nonatomic, strong) NSNumber *extraCredit;
@property (nonatomic, strong) NSNumber *notGraded;


- (id)initWithDate:(NSString *)date assignmentName:(NSString *)assignmentName totalPoints:(NSNumber *)totalPoints recievedPoints:(NSNumber *)recievedPoints classAverage:(NSString *)classAverage extraCredit:(NSNumber *)extraCredit notGraded:(NSNumber *)notGraded;

我在viewController中创建了一个实例,希望用一些数据填充新创建的项目......但是我无法弄清楚如何访问对象的变量。我去了MAAssignment *assignment = [[MAAssignment alloc] init];,然后我尝试了[assignment setDate]assignment.date = ddate,但似乎都没有。

我误解了对象的访问器是如何工作的吗?

3 个答案:

答案 0 :(得分:3)

您应该将这些变量放在h中。文件 MAAsignment

答案 1 :(得分:0)

我不能很好地理解你的问题(你在哪里声明这段代码?你的MAAsiignment初始化示例的完整代码是什么?),但无论如何我都会尝试回答。 / p>

您确定@property声明是在.h中的@interface和.m内的不是吗? @interface内的.m是私有类扩展,允许您声明私有属性。要使它们在外面可用,您需要将它们放在标题(.h)中。

请发布更多代码,让我们提供更详尽的答案。

答案 2 :(得分:0)

您描述的是数据容器对象。它应该按照描述的方式工作:

MAAssignment *anAssignment = [[MAAssignment alloc] init];
anAssignment.date = [NSDate date];
anAssignment.totalPoints = @(10);

NSLog(@"anAssignment.date = %@", anAssignment.date);
NSLog(@"anAssignment.totalPoints = %@", anAssignment.totalPoints);

应该完美地运作。你有任何警告吗?