2011-10-30 72 views
1

我正在爲需要存儲整數的iPhone編寫應用程序,以便當用戶打開應用程序時,它將能夠檢索從上次會話存儲的整數,以及程序何時結束,它將存儲整數。我遇到的問題是存儲原始數據類型(如整數)時存在問題。持久數據和原始數據類型Ios編程

+0

如何你想存儲它們? – zaph

+0

那麼因爲我只需要保存五六個整數,使用fopen()會更好嗎? –

+0

對於那幾個,'NSUserDevaults'已經很簡單了。 – zaph

回答

2

對於少量的數據,可以使用其NSUserDefaults的方法有保存原始類型,如:

- (void)setInteger:(NSInteger)value forKey:(NSString *)defaultName 
- (void)setFloat:(float)value forKey:(NSString *)defaultName 
- (NSInteger)integerForKey:(NSString *)defaultName 
- (float)floatForKey:(NSString *)defaultName 

他們,否則轉換爲NSNumber類型並保存爲對象,也許在plist中。

+ (NSNumber *)numberWithInt:(int)value 
+ (NSNumber *)numberWithFloat:(float)value 
- (int)intValue 
- (float)floatValue 

如果你有大量的數據考慮CoreData。

例子:

[[NSUserDefaults standardUserDefaults] setObject:@"myStringValue" forKey:@"myStringKey"]; 
[[NSUserDefaults standardUserDefaults] setInteger:42 forKey:@"myIntegerKey"]; 

NSString *myRetreivedString = [[NSUserDefaults standardUserDefaults] stringForKey:@"myStringKey"]; 
NSInteger myRetreivedInteger = [[NSUserDefaults standardUserDefaults] integerForKey:@"myIntegerKey"]; 

NSLog(@"myRetreivedString: '%@'", myRetreivedString); 
NSLog(@"myRetreivedInteger: %d", myRetreivedInteger); 

的NSLog輸出:

myRetreivedString: 'myStringValue' 
myRetreivedInteger: 42 
+0

叫我笨,但我可以請一個例子! –