【发布时间】:2010-10-19 20:52:45
【问题描述】:
我有一些代码,在模拟器中运行完美,但我无法在真正的 iPhone 设备上运行它,我不明白原因:
- (void)loadView {
self.title = @"Optionen";
[super loadView];
}
- (void)viewDidLoad {
[super viewDidLoad];
NSMutableArray *strArray = [NSMutableArray new];
NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
if ([[prefs stringForKey:@"facebook"] length] > 0 ) {
[strArray addObject: [prefs stringForKey:@"facebook"]];
}
else {
[strArray addObject:@"YES"];
}
if ([[prefs stringForKey:@"twitter"] length] > 0 ) {
[strArray addObject: [prefs stringForKey:@"twitter"]];
}
else {
[strArray addObject:@"YES"];
}
if ([[prefs stringForKey:@"pm"] length] > 0 ) {
[strArray addObject: [prefs stringForKey:@"pm"]];
}
else {
[strArray addObject:@"YES"];
}
[facebookSwitch setOn:[[strArray objectAtIndex:0] boolValue]];
[twitterSwitch setOn:[[strArray objectAtIndex:1] boolValue]];
[pmSwitch setOn:[[strArray objectAtIndex:2] boolValue]];
[strArray release];
}
-(IBAction) change:(id) sender {
NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
if (facebookSwitch.on) {
[prefs setObject:@"YES" forKey:@"facebook"];
}
else {
[prefs setObject:@"NO" forKey:@"facebook"];
}
if (twitterSwitch.on) {
[prefs setObject:@"YES" forKey:@"twitter"];
}
else {
[prefs setObject:@"NO" forKey:@"twitter"];
}
if (pmSwitch.on) {
[prefs setObject:@"YES" forKey:@"pm"];
}
else {
[prefs setObject:@"NO" forKey:@"pm"];
}
[prefs synchronize];
}
我使用 NSUserDefaults 有问题吗?
感谢您的帮助。
【问题讨论】:
-
你的意思是它不起作用?日志中有错误吗?
-
嗯,这就是我目前的主要问题:我这里没有设备来调试它,所以其他人对其进行了测试,所以我只知道应用程序已关闭。我知道这不是解决问题的一个很好的基础,但我就是不明白为什么它在设备上不起作用。
-
测试仪之前是否成功加载过您的程序?即,您确定这不是某种供应问题吗?
-
是的,它只是一个视图(这个视图)不起作用,其他视图没有问题。这是我使用 NSUserDefaults 的唯一视图,这就是为什么我认为这可能是问题所在,但我的实现应该一切正常。
-
在这种情况下,我真的不能说我在任何地方都看到了任何错误...清理您的构建,删除设备上的任何当前版本,确保您的模拟器和测试仪的设备都设置为相同的 SDK。如果它仍然不起作用,也许更多的上下文会有所帮助(即实现此视图的控制器)。
标签: iphone objective-c ios-simulator nsuserdefaults