Xcode:表达式不可分配

时间:2014-03-17 21:41:21

标签: ios objective-c xcode

我试图"刷新" /"更新"用户成功通过身份验证后,我的应用中的共享字符串。这就是我所拥有的:

// MyAuth.h
//@interface
+ (NSString *)sharedAuthToken;

// MyAuth.m
+ (NSString *)sharedAuthToken {
    static NSString *_sharedAuthToken = nil;
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
        _sharedAuthToken = [[NSUserDefaults standardUserDefaults] objectForKey:@"token"];
    });

    return _sharedAuthToken;
}

// AuthCtrl.m
- (void)saveOauthInfo:(NSString *)token {

    [MyAuth sharedAuthToken] = token; // getting error here
}

我想更新或刷新sharedAuthToken。我怎么能这样做?

*如果代码过于混乱或过于混乱,请告诉我。

2 个答案:

答案 0 :(得分:2)

创建另一个类方法:

+(void) setSharedAuthToken:(NSString *) token;

_sharedAuthTokensharedAuthToken方法移至类的范围,但仍然 MyAuth.m文件中<: / p>

static NSString *_sharedAuthToken;

@implementation MyAuth ...

实施新的类方法:

+(void) setSharedAuthToken:(NSString *) token {
   _sharedAuthToken = token; 
}

然后在您的saveOauthInfo方法中:

[MyAuth setSharedAuthToken:token];

答案 1 :(得分:1)

你没有setter方法。

+ (NSString *)sharedAuthToken是一个“getter”,只返回数据。

你应该设置一个@property,如果它符合你的需要,它会为你生成一个setter,或者你自己创建一个。

e.g。

+ (void)setSharedAuthToken:(NSString *)token { ... }

当然,既然你的getter将令牌存储在静态局部变量中,并且将其设置包装在dispatch_once中以使其成为单身,那么你将不得不重构所有这些。