我不知道這是否是最好的解決方案,如果能幫到你。對我來說,做到這一點的方式是單身人士。您應該在啓動應用程序時使用Bool var premium來初始化他。此時,您應該使用您需要的所有數據初始化課程:最喜歡的行數,最後一天的評論數量......。
在每次「高級操作」之前,您都應該使用如下方法:BOOL authorized = [[AuthorizeSingleton sharedmanager] operation]
。在這裏,您將需要進行所有測試,以瞭解他是否可以執行高級操作。
每當有人想要做一個高級操作時,你應該從viewController訪問這個單例。如果返回是NO,則彈出錯誤消息,在另一種情況下,您執行該操作。
如果用戶是優質總是返回是。
編碼迅速類似的東西
這裏.H
#import <Foundation/Foundation.h>
@interface AuthorizeSingleton : NSObject
@property (strong, nonatomic) NSNumber* premium;
@end
這裏.M #進口AuthorizedSingleton.h
AuthorizeSingleton* _sharedInstance=nil;
@interface AuthorizeSingleton()
@property (strong, nonatomic) NSDate* timestamp;
@property (strong, nonatomic) NSNumber* numberOfcomentary;
@end
@implementation AuthorizeSingleton
@synthesize timestamp=_timestamp, numberOfcomentary=_numberOfcomentary;
-(id)init{
if (self == [super init]) {
//Here you should take data from your persistence(NSUSerDefaults or something like that) Here I initialize at 0
_timestamp=[[NSDate alloc] init];
_numberOfcomentary= [NSNumber numberWithInt:0];
}
return self;
}
+(AuthorizeSingleton*)sharedInstance{
if (!_sharedInstance) {
_sharedInstance = [[AuthorizeSingleton alloc] init];
}
return _sharedInstance;
}
-(BOOL)shouldDoComentary{
NSDate* today= [[NSDate alloc] init];
NSTimeInterval interval = [_timestamp timeIntervalSinceDate: today];
if (interval>60*60*24) {
_timestamp=today;
_numberOfcomentary= [NSNumber numberWithInt:0];
}
if (_numberOfcomentary.integerValue>5 && !_premium.boolValue) {
return NO;
}
return YES;
}
@end
我沒有測試它但是這是理念。你可以從你想要授權的地方打電話給班級
BOOL auth = [[AuthorizedSingleton sharedInstance] shouldDoComentary]
if(!auth){
//show error
}
else{
//do action
}
聽起來不錯。但是,我怎麼能限制他每天只能寫五條評論呢?內部時鐘的好處是什麼,或者你會怎麼做? – Blade
對於我有一個最後一次將計數器重置爲0的時間戳。每當他做出評論時,如果保存的時間戳和當前時間之間的差異爲1天或更多,則重置計數器。你覺得這很好嗎?這可以在授權用戶做評論的功能上的單身人員上做。 – Jpellat
當您重置計數器時,您應該將時間戳重置爲 – Jpellat