2016-08-04 4 views
1


こんにちは!
私はXcodeで始まります(私はフランス語ですので、私の英語は完璧ではありません)、私はあなたの助けが必要です。
私のプロジェクトは、各学校の科目(5つ)のために私の平均のクラスを計算するアプリを作ることです。変数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。問題がどこにあるかを理解し、解決するのに役立つ他のものが必要な場合は、躊躇しないでください。
私は私の他の主題の学校の他ViewControllerに保存する他のデータを持っているのに、私は「*デフォルト」の

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 

に別の変数を使用する必要がある場合、私はあまりにも思っていました。

私に手伝ってくれてありがとう!
のXcodeのバージョン:7.3.1
のiOSのバージョン:9.3.3

+0

'INF231noteCC1'をコンソールにログ出力すると、何が出力されますか? – FelixSFD

+0

INF231noteCC1をコンソールにログする方法がわかりません。 – edajv

+0

答えがうまくいけば、ログに記録する必要はありません。 – FelixSFD

答えて

0

これを試してください:

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

@end 

が、それはあなたにお役に立てば幸いです。

+0

それは動作します!どうもありがとう! – edajv

0

intNSIntegerの違いがあります。

[[INF231CC1 text] integerValue]NSIntegerを返しますが、intに保存してください。

これは、代わりに動作するはずです:

NSInteger INF231noteCC1 = [[INF231CC1 text] integerValue]; 

を同じNSUserDefaultsためのものです:

NSIntegerなくintを返しintegerForKey

+1

ありがとうございます。私はあなたが言ったことを変更しましたが、それはまだ動作しません..他のアイデア? – edajv

関連する問題