将NSNotFound分配给属性?

时间:2014-03-08 00:13:11

标签: objective-c properties

我可以将'NSNotFound'分配给NSInteger类型的属性吗?所以这就是我所拥有的:

@interfcae MyClass()
@property (nonatomic) NSInteger sectionNumber;
@end

@implementation MyClass
- (id)init
{
   [my_switch isOn] ? self.sectionNumber = 0 : self.sectionNumber = NSNotFound;
}
@end

这会引发错误"Assignment to readonly property"。即使我只是尝试"self.sectionNumber = NSNotFound",我也会遇到同样的错误。

我可以不将NSNotFound分配给属性吗?如果不是我可以选择的其他选项呢?

1 个答案:

答案 0 :(得分:1)

您的代码应为:

- (id)init {
   self.sectionNumber = [my_switch isOn] ? 0 : NSNotFound;
}

Wain对这个init方法提出了一个很好的观点。将此重命名为init以外的其他内容,或将其设置为正确的init方法。

更新

根据您的评论,您在.h中有以下内容:

@property (nonatomic, readonly) NSInteger sectionNumber;

这意味着你需要.m:

@property (nonatomic, readwrite) NSInteger sectionNumber;