应用关闭时将int值保存到Array

时间:2012-04-16 12:37:48

标签: objective-c xcode

我有一个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];
}

感谢您的帮助。

3 个答案:

答案 0 :(得分:2)

您应该使用NSNumber,例如:

NSNumber *num = [NSNumber numberWithInt:int];

将为您提供包含int的对象。要从中回读,请使用[num intValue]

答案 1 :(得分:0)

使用count作为其值创建一个NSNumber对象,并将该对象放入数组中。 NSArrays需要是对象数组。

答案 2 :(得分:0)

容器类使用的对象不是基本类型。你必须在NSNumber(数字),NSData等中包装基本类型。