0

我有一个 Iphone 应用程序,它使用大量的 int 值,这些值将在 IBActions 上递增,我想在应用程序关闭时将 int 值保存到一个数组中,以便在重新打开应用程序时存储和使用这些值。我不确定如何将 int 值写入数组。从功能上讲,我让这个与文本字段一起使用,但不是整数,即

整数计数;

使用的代码:

NSArray *values = [[NSArray alloc] initWithObjects:fieldOne.text,fieldTwo.text,count, nil];

这给出了“赋值使指针从没有强制转换的整数”消息。

无论如何要将已经存储的 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];
}

谢谢您的帮助。

4

3 回答 3

2

您应该使用 NSNumber ,例如:

NSNumber *num = [NSNumber numberWithInt:int];

这会给你一个包含你的 int 的对象。要从中读取,请使用[num intValue]

于 2012-04-16T12:46:02.390 回答
0

容器类使用对象而不是基本类型。您必须将基本类型包装在 NSNumber (numbers) 、 NSData 等中。

于 2012-04-16T12:44:35.887 回答
0

创建一个以您的计数为值的 NSNumber 对象,并将该对象放入您的数组中。NSArrays 需要是对象数组。

于 2012-04-16T12:41:33.963 回答