持久数据和原始数据类型Ios编程

时间:2011-10-30 14:14:25

标签: ios types persistent primitive-types

我正在为iPhone编写一个需要存储整数的应用程序,以便当用户打开应用程序时,它将能够检索上次会话中存储的整数,并且当程序结束时,它将存储整数。我遇到的问题是存储原始数据类型(如整数)存在问题。

1 个答案:

答案 0 :(得分: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