Objective c 是否将NSNotFound分配给属性?

Objective c 是否将NSNotFound分配给属性?,objective-c,properties,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 这会引发一个

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

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

@implementation MyClass
- (id)init
{
   [my_switch isOn] ? self.sectionNumber = 0 : self.sectionNumber = NSNotFound;
}
@end
这会引发一个错误,即
“分配给只读属性”
。即使我只是尝试“self.sectionNumber=NSNotFound”,我也会得到同样的错误

我不能将NSNotFound分配给属性吗?如果没有,我还有什么其他选择?

您的代码应该是:

- (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;

这是你的全部密码吗?它不是一个格式良好的
init
方法(调用super,返回self)。您可以将
NSInteger
变量分配给
NSNotFound
。您尚未证明
sectionNumber
不是只读的。无论如何,这不是编写
init
方法的方法。三元运算符也不是很好的用法。我的init中有[super init]。。。只是错过了在这里添加它,因为我更关注NSNotFound问题。但我确实注意到一件事。。。我的头文件将此属性设置为“readonly”,我在实现文件中将其设置为“readwrite”。如果我从头文件中删除readonly并使其在头文件中为readwrite,则它将正常工作,否则会抛出“readonly属性”错误。好吧,那么基本上您根本没有向我们展示您的真实代码。因为一直对我们撒谎而被否决。不过还是一个糟糕的初始化。@matt是的,我刚刚记下了。我的副本中有正确的初始化。但是,当我将NSNotFound指定给属性时,该属性是否可以不设为只读?记笔记与显示正确的代码不同。不要显示错误的
init
@tech\u learning查看我的更新答案以修复只读问题。