簡體   English   中英

按鈕保存數據NSUserDefaults不起作用

[英]button save data NSUserDefaults doesn't work


你好!
我從Xcode開始(我是法國人,所以我的英語不是完美的抱歉),我需要你的幫助。
我的項目是制作一個應用程序,用於計算每個學校科目的平均課程(五)。 我使用變量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的圖片放在Main.Storyboard這樣你就可以看到更好的1 如果您需要其他一切來找出問題所在並幫助我解決問題,請不要猶豫。
我也想知道我是否應該使用不同的變量

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];

“* defaults”盡管我有其他數據保存在其他ViewController我的其他學科。

如果你花時間幫助我,非常感謝!
Xcode版本:7.3.1
iOS版本:9.3.3

intNSInteger之間存在差異。

[[INF231CC1 text] integerValue]返回一個NSInteger ,但是將它保存在int

這應該工作:

NSInteger INF231noteCC1 = [[INF231CC1 text] integerValue];

NSUserDefaults也是NSUserDefaults

integerForKey返回NSInteger而不是int

請試試這個:

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

@end

希望它對你有所幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM