【问题标题】:Objective C @property accessors in custom class?自定义类中的目标 C @property 访问器?
【发布时间】:2014-05-10 01:01:05
【问题描述】:

我有一个名为 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,但它们似乎都不起作用。

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

【问题讨论】:

  • 你是什么意思他们不工作?您如何以及在哪里确定它们不起作用?
  • 您确实需要提供更多详细信息以供任何人帮助您。
  • 请具体说明您收到的错误消息或无法正常工作的内容(请显示代码并用实际结果描述预期结果)。就这个问题而言,它应该因为没有提供足够的信息而被关闭。
  • 我很抱歉这个非常模糊的问题。我意识到点符号 assignment.[property] 让我“设置”它的价值......
  • 点符号assignment.date 可用于设置和获取值。但是除了“它们似乎都不起作用”之外,您还没有说出您的确切问题是什么。顺便说一句,您应该将指定初始化程序中的(id) 替换为(instancetype)

标签: ios objective-c accessor


【解决方案1】:

你应该把这些变量放在 h.h 中。文件 MAAsignment的

【讨论】:

  • 这些看起来像是在 .h 中。
【解决方案2】:

我不太了解您的问题(您在哪里声明此代码?您的 MAAsiignment 初始化示例的完整代码是什么?),但我还是会尝试回答。

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

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

【讨论】:

  • 这真的没有试图回答这个非常模糊的问题。
【解决方案3】:

你描述的是一个数据容器对象。它应该像描述的那样工作:

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

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

应该可以完美运行。您收到任何警告吗?

【讨论】:

    猜你喜欢
    • 2016-08-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-07
    • 2018-10-04
    相关资源
    最近更新 更多