我有一个Iphone应用程序,它使用很多在IBActions上递增的int值,我想在应用程序关闭时将int值保存到数组中,以便这些值存储并在重新打开应用程序时使用。我不知道如何将int值写入数组。从功能上来说,我得到的是文字字段,但不是整数,即
int count;
使用的代码:
NSArray *values = [[NSArray alloc] initWithObjects:fieldOne.text,fieldTwo.text,count, nil];
这给出了“Assignment从指针生成整数而没有强制转换”的消息。
是否有将已存储的int值写入和数组? 我使用的代码如下:
我认为没问题,直到将数据调入数组。我已经评论了一些失败的努力
-(NSString *) saveFilePath{
NSArray *path = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
return [[path objectAtIndex:0] stringByAppendingPathComponent:@"savefile.plist"];
}
-(void) applicationDidEnterBackground: (UIApplication *) application{
//NSNumber *num = [[NSNumber alloc]initWithInt:count];
NSArray *values = [[NSArray alloc] initWithObjects:fieldOne.text,fieldTwo.text,[NSNumber numberWithInt:count],nil];
[values writeToFile:[self saveFilePath] atomically:YES];
[values release];
}
- (void)viewDidLoad {
//NSNumber *num = [[NSNumber alloc]initWithInt:count];
NSString *myPath = [self saveFilePath];
BOOL fileExists = [[NSFileManager defaultManager] fileExistsAtPath:myPath];
if (fileExists) {
NSArray *values = [[NSArray alloc] initWithContentsOfFile:myPath];
fieldOne.text = [values objectAtIndex:0];
fieldTwo.text = [values objectAtIndex:1];
//[NSNumber count intValue] = [values objectAtIndex:2];
[values release];
}
UIApplication *myApp = [UIApplication sharedApplication];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector (applicationDidEnterBackground:)name:UIApplicationDidEnterBackgroundNotification object:myApp];
[super viewDidLoad];
}
感谢您的帮助。
答案 0 :(得分:2)
您应该使用NSNumber,例如:
NSNumber *num = [NSNumber numberWithInt:int];
将为您提供包含int的对象。要从中回读,请使用[num intValue]
答案 1 :(得分:0)
使用count作为其值创建一个NSNumber对象,并将该对象放入数组中。 NSArrays需要是对象数组。
答案 2 :(得分:0)
容器类使用的对象不是基本类型。你必须在NSNumber(数字),NSData等中包装基本类型。