2016-08-04 35 views
1


您好!
我從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
的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

integerForKey返回NSInteger而不是int

+1

感謝您的回答。我改變了你所說的話,但它仍然無法運作..其他想法? – edajv