0

我创建了一个名为properties.plist 的属性列表。然后我写了这个:

NSString *path = [[NSBundle mainBundle] bundlePath];
NSString *finalPath = [path stringByAppendingPathComponent:@"speicherung.plist"];
NSMutableArray *plistData = [[NSMutableArray arrayWithContentsOfFile:finalPath] retain];
int a = [[plistData objectAtIndex:1] intValue];
NSLog(@"%i", a); // returns always 0 - Even If I set a other number in the plist
a = a + 1;
NSNumber *ff = [NSNumber numberWithInt:a];
[plistData insertObject:ff atIndex:1];
NSLog(@"%@", [plistData objectAtIndex:1]); // returns 1 - right, because 0 + 1 = 1
[plistData writeToFile:finalPath atomically:YES];

当我再次运行此代码时,我总是在第一个 NSLog 中获得数字 0,在第二个中获得数字 1。为什么?

此代码适用于 iPhone。

4

1 回答 1

3
[plistData objectAtIndex:1];

这是一个 NSNumber。所以这个 ObjC 对象的地址被转换为一个整数并赋值给a,给出了一个奇怪的值。用于-intValue从中提取整数。

int a = [[plistData objectAtIndex:1] intValue];
于 2010-03-21T20:41:22.893 回答