【发布时间】:2014-10-29 19:23:18
【问题描述】:
我正在尝试访问NSArray,但我以某种方式失败了(例如:我保存它并从NSUserDefaults 加载它):
保存:
-(id)init{
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
if ([defaults objectForKey:@"set1"] == nil ){
NSMutableArray* aux =[[NSMutableArray alloc] initWithCapacity:8];
[aux addObject:@1];
[aux addObject:@2];
[aux addObject:@3];
[aux addObject:@0];
[defaults setObject:aux forKey:@"set1"];
[defaults synchronize];
[defaults setBool:TRUE forKey:@"sound"];
}
return [super init];
}
加载中:
-(void)onEnter{
[super onEnter];
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSMutableArray* save = [[defaults arrayForKey:@"set1"] mutableCopy];
CCLOG(@"%@",save);
[_S1 showStars:((int)[save objectAtIndex:0])];
[_S2 showStars:((int)[save objectAtIndex:1])];
[_S3 showStars:((int)[save objectAtIndex:2])];
[_S4 showStars:((int)[save objectAtIndex:3])];
}
不知何故我错过了一些东西,我从CCLOG(@"%@",save);得到这个作为回报
2014-10-29 16:15:32.155 IM[2091:70b] (
1,
2,
3,
0
)
使用CCLOG(@"%i",((int)[save objectAtIndex:0]))打印每个对象
2014-10-29 16:15:32.156 IM[2091:70b] 176633792
2014-10-29 16:15:32.156 IM[2091:70b] 176633808
2014-10-29 16:15:32.157 IM[2091:70b] 159857616
2014-10-29 16:15:32.157 IM[2091:70b] 159857632
我尝试了一些东西,但没有任何效果。
对不起,如果这是一个愚蠢的问题,我真的是 Objective-C 的新手。
【问题讨论】:
-
NSArray 元素是对象。如果不先将它们转换为整数,则无法将它们打印为整数。将指针转换为 int 只会为您提供指针的 int 视图。
-
@HotLicks 是对的。您可以通过向每个对象发送
integerValue来获取整数值。 -
太棒了,它成功了,谢谢!
-
而您的
init方法的代码全错了。 -
@HotLicks,您能否将您的回复发布为答案,以便 OP 接受并标记为已回答?
标签: ios objective-c nsarray nsuserdefaults