2016-08-04 3 views
1


Hello!
Я начинаю с Xcode (и я французский, поэтому мой английский не очень жаль), и мне нужна ваша помощь, пожалуйста.
Мой проект состоит в том, чтобы сделать приложение, которое рассчитало бы мой средний класс для каждого школьного предмета (пять). Я использовал переменную NSUserDefaults, чтобы сохранить мои оценки, но она не работает, и я не знаю почему.кнопка сохранить данные NSUserDefaults не работает

Это придает моему ViewController.h для одной предметной школы (остальные довольно же, только изменения переменных)

#import <UIKit/UIKit.h> 

@interface INF231ViewController : UIViewController{ 

IBOutlet UITextField *INF231CC1; 
IBOutlet UITextField *INF231CC2; 
IBOutlet UITextField *INF231ET1; 
IBOutlet UITextField *INF231ET2; 
IBOutlet UILabel *INF231moyenne;} 

@property(nonatomic,retain) UITextField *INF231CC1; 
@property(nonatomic,retain) UITextField *INF231CC2; 
@property(nonatomic,retain) UITextField *INF231ET1; 
@property(nonatomic,retain) UITextField *INF231ET2; 
@property(nonatomic,retain) UILabel *INF231moyenne; 

- (IBAction)INF231save:(id)sender; 
- (IBAction)INF231calculer:(id)sender; 

@end 

И это ViewController.m:

#import "INF231ViewController.h" 
@interface INF231ViewController() 
@end 

@implementation INF231ViewController 

- (void)viewDidLoad { 

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 

int INF231noteCC1 = [defaults integerForKey:@"INF231noteCC1"]; 
int INF231noteCC2 = [defaults integerForKey:@"INF231noteCC2"]; 
int INF231noteET1 = [defaults integerForKey:@"INF231noteET1"]; 
int INF231noteET2 = [defaults integerForKey:@"INF231noteET2"]; 

NSString *INF231noteCC1String = [NSString stringWithFormat:@"%i",INF231noteCC1]; 
NSString *INF231noteCC2String = [NSString stringWithFormat:@"%i",INF231noteCC2]; 
NSString *INF231noteET1String = [NSString stringWithFormat:@"%i",INF231noteET1]; 
NSString *INF231noteET2String = [NSString stringWithFormat:@"%i",INF231noteET2]; 

INF231CC1.text = INF231noteCC1String; 
INF231CC2.text = INF231noteCC2String; 
INF231ET1.text = INF231noteET1String; 
INF231ET2.text = INF231noteET2String; 

[super viewDidLoad];} 

- (void)didReceiveMemoryWarning { 
[super didReceiveMemoryWarning];} 

- (IBAction)INF231save:(id)sender { 
[INF231CC1 resignFirstResponder]; 
[INF231CC2 resignFirstResponder]; 
[INF231ET1 resignFirstResponder]; 
[INF231ET2 resignFirstResponder]; 

int INF231noteCC1 = [[INF231CC1 text] integerValue]; 
int INF231noteCC2 = [[INF231CC2 text] integerValue]; 
int INF231noteET1 = [[INF231ET1 text] integerValue]; 
int INF231noteET2 = [[INF231ET2 text] integerValue]; 

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 

[defaults setInteger:INF231noteCC1 forKey:@"INF231noteCC1"]; 
[defaults setInteger:INF231noteCC2 forKey:@"INF231noteCC2"]; 
[defaults setInteger:INF231noteET1 forKey:@"INF231noteET1"]; 
[defaults setInteger:INF231noteET2 forKey:@"INF231noteET2"]; 

[defaults synchronize]; 

NSLog(@"Data saved");} 

@end 

Когда я нажимаю кнопка «сохранить» написана в Консоле «Данные сохранены», но Клавиатура не отключена, и данные исчезли.
Я также поставил фотографию Main.Storyboard, чтобы вы могли видеть лучше 1. Если вам нужно все, чтобы выяснить, где проблема, и помочь мне решить ее, не стесняйтесь.
мне было интересно, тоже, если я должен использовать другую переменную для

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 

из «* по умолчанию», хотя у меня есть другие данные, чтобы сохранить в других ViewController для моей другой теме школы.

Большое спасибо, если вы нашли время, чтобы помочь мне!
версия Xcode 7.3.1
Версии прошивки: 9.3.3

+0

Каков результат, когда вы регистрируете 'INF231noteCC1' на консоли? – FelixSFD

+0

Я не знаю, как зарегистрировать INF231noteCC1 на консоли. – edajv

+0

Если мой ответ сработал, вам не нужно его регистрировать. – FelixSFD

ответ

0

Пожалуйста, попробуйте следующее:

@implementation INF231ViewController 
@synthesize INF231CC1, INF231CC2, INF231ET1, INF231ET2; // add 

@end 

Надеется, что это помогает вам.

+0

он работает! большое спасибо! – edajv

0

Существует разница между int и NSInteger.

[[INF231CC1 text] integerValue] возвращает NSInteger, но Вы экономите его в int.

Это должно работать вместо этого:

NSInteger INF231noteCC1 = [[INF231CC1 text] integerValue]; 

То же самое для NSUserDefaults:

integerForKey возвращает NSInteger и не int.

+1

Спасибо за ваш ответ. Я изменил то, что вы сказали, но он все еще не работает. Какие-либо другие идеи? – edajv

Смежные вопросы