每当我调用我的方法 generateTitleString 时,我需要向用户显示一条文字" 视频X ",其中" X "是显示给用户的最后一个视频的编号加1.如果我使用下面的代码,它将始终生成相同的数字,即1。
- (NSString *) generateTitleString
{
NSString *title = [NSString stringWithFormat:@"Video %d", count+1];
return title;
}
如何在持久性中保存和检索上次显示的视频的值,以便每次显示" 视频X "文本显示增加的计数?
Thxs。
答案 0 :(得分:1)
看起来你没有增加变量数量,这就是为什么你总是 "视频1"
更新:您可以创建一个类,您可以在其中保留所有全局变量(例如" 计数")。在此示例中,我将此类命名为 GlobalData 。您还需要使用用户默认值来永久保存某些变量的值。
尝试下一步。
#import <Foundation/Foundation.h>
@interface GlobalData : NSObject
+ (NSInteger) getCount;
+ (void) setCount:(NSInteger)newCount;
@end
#import "GlobalData.h"
#define COUNT_USER_DEFAULT_KEY @"COUNT_USER_DEFAULT_KEY"
@implementation GlobalData
/**
* It returns the number of the last video displayed.
*
* @param
* @return the number of the last video displayed
*/
+ (NSInteger) getCount
{
NSInteger count;
NSString* recoveredValue;
// init variables
count = 0;
recoveredValue = [[NSUserDefaults standardUserDefaults] valueForKey:COUNT_USER_DEFAULT_KEY];
// If the recovered value is not NIL, we convert it to an integer.
if (recoveredValue != nil)
count = [recoveredValue integerValue];
return count;
}
/**
* It sets the number of the last video displayed with the value of input "newCount".
*
* @param newCount Number of the last video displayed.
* @return
*/
+ (void) setCount:(NSInteger)newCount
{
// Save user info in NSUserDefaults.
[[NSUserDefaults standardUserDefaults] setValue:[NSString stringWithFormat:@"%li", (long)newCount] forKey:COUNT_USER_DEFAULT_KEY];
// Writes NSUserDefaults on disk.
[[NSUserDefaults standardUserDefaults] synchronize];
}
@end
#import "GlobalData.h"
@implementation
- (void) viewDidLoad
{
[super viewDidLoad];
}
- (NSString *) generateTitleString
{
NSString *title;
NSInteger count;
// Getting count and increasing it.
count = [GlobalData getCount];
count = count + 1;
// Creating title by using 'count'.
title = [NSString stringWithFormat:@"Video %d", count];
// Updating 'count'
[GlobalData setCount:count];
return title;
}
@end