【发布时间】:2014-06-17 12:52:54
【问题描述】:
我希望我的班级有一个只能从枚举中分配值的属性,但我无法完全理解语法。这是我的头文件:
NS_ENUM(NSInteger, SPSSearchResultsOrder) {
SPSSearchResultsOrderAlphabetical,
SPSSearchResultsOrderPrice
};
@interface SPSSearchQuery : NSObject
@property (readonly, nonatomic) enum SPSSearchResultsorder searchResultsOrder;
// etc.
@end
Xcode 建议我将 enum 关键字添加到我的属性声明中以获取要编译的代码,这就是为什么我认为这是不对的。
是否应该将属性键入为NSInteger,因为那是枚举的类型?在这种情况下,我如何强制该属性只能分配枚举值之一?
如果我是用 Java 编写的,我会这样做:
public enum SearchResultsOrder {
SearchResultsOrderAlphabetical,
SearchResultsOrderPrice;
}
public class SearchQuery
private SearchResultsOrder searchResultsOrder;
public SearchResultsOrder getSearchResultsOrder() {
return this.searchResultsOrder;
}
}
——正如你所见,这里编译器能够强制枚举和成员变量类型之间的关系。什么是 Objective-C 等价物?
提前致谢。
【问题讨论】:
-
如果你在
NS_ENUM前面加上typedef,那么你可以在没有enum关键字的情况下将你的枚举类型称为SPSSearchResults。
标签: objective-c