我有一个代码来创建我自己的函数,但它给了我一个警告:
所以它显示出警告,我想摆脱它们。
这是我的.h代码:
typedef NSUInteger SMUserKey;
NS_ENUM(SMUserKey) {
SMUsername = 1,
SMFirstName = 2,
SMLastName = 3,
SMFullName = 4,
SMEmail = 5,
};
这是我的.m代码:
-(void)awakeFromNib {
NSString *result = [SMUser getValueForKey:SMUsername];
NSLog(@"THE RESULT: %@", result);
}
+ (NSString *)getValueForKey:(SMUserKey*)myUserKey {
NSString *myUserKeyValue = nil;
if (myUserKey == 1) {
myUserKeyValue = @"Username";
}
if (myUserKey == 2) {
myUserKeyValue = @"First Name";
}
if (myUserKey == 3) {
myUserKeyValue = @"Last Name";
}
if (myUserKey == 4) {
myUserKeyValue = @"Full Name";
}
if (myUserKey == 5) {
myUserKeyValue = @"Email";
}
return myUserKeyValue;
}
这是显示警告的图片:
答案 0 :(得分:1)
条件检查应该是if (myUserKey == 1)
而不是(myUserKey = 1)
,对其余部分进行相同的修改。
答案 1 :(得分:1)
只需使用switch case发布另一种方法,
+ (NSString *)getValueForKey:(SMUserKey*)myUserKey {
NSString *myUserKeyValue = nil;
switch (SMUserKey) {
case 1:
{
myUserKeyValue = @"Username";
break;
}
case 2:
{
myUserKeyValue = @"First Name";
break;
}
case 3:
{
myUserKeyValue = @"Last Name";
break;
}
case 4:
{
myUserKeyValue = @"Full Name";
break;
}
case 5:
{
myUserKeyValue = @"Email";
break;
}
default:
break;
}
return myUserKeyValue;
}
答案 2 :(得分:0)
你有枚举名称。 使用它们
+ (NSString *)getValueForKey:(SMUserKey)myUserKey {
switch(myUserKey) {
case SMUsername: return @"Username";
case SMFirstName: return @"First Name";
case SMLastName: return @"Last Name";
case SMFullName: return @"Full Name";
case SMEmail: return @"EMail";
default: return nil;
}
}
对你的幻数进行硬编码会导致长期的维护问题。
请注意,参数类型应为SMUserKey
而不是SMUserKey*
答案 3 :(得分:-1)
这应该这样做。
-(void)awakeFromNib {
NSString *result = [SMUser getValueForKey:SMUsername];
NSLog(@"THE RESULT: %@", result);
}
+ (NSString *)getValueForKey:(SMUserKey*)myUserKey {
NSString *myUserKeyValue = nil;
if (myUserKey == 1) {
myUserKeyValue = @"Username";
}
if (myUserKey == 2) {
myUserKeyValue = @"First Name";
}
if (myUserKey == 3) {
myUserKeyValue = @"Last Name";
}
if (myUserKey == 4) {
myUserKeyValue = @"Full Name";
}
if (myUserKey == 5) {
myUserKeyValue = @"Email";
}
return myUserKeyValue;
}