#iphone
#iPhone
Вопрос:
Я создаю клиент-серверную программу для iphone, и я хочу использовать свой serverIP, который является частью моего второго представления, в первом представлении serverIP — это uitextfield. я использую для ввода значения ServerIP во втором представлении, но я хочу использовать значение serverIP В первом представлении.
«»файл интерфейса secondview.h»»
#import <UIKit/UIKit.h>
@interface secondview : UIViewController {
IBOutlet UIView *view;
IBOutlet UITextField *serverIP;
IBOutlet UITextField *noc;
IBOutlet UIButton *save;
IBOutlet UIButton *back;
IBOutlet UIButton *load;
IBOutlet UILabel *display1;
}
-(IBAction) back;
-(IBAction) save;
-(IBAction) load;
@property (nonatomic,retain) IBOutlet UITextField *serverIP;
@property (nonatomic,retain) IBOutlet UITextField *noc;
@property (nonatomic , retain) IBOutlet UILabel *display1;
@end
«»secondview.m»» файл реализации
#import "secondview.h"
@implementation secondview
@synthesize serverIP,noc,display1;
-(IBAction) save{
[[NSUserDefaults standardUserDefaults] setInteger:serverIP forKey:@"save"];
NSUserDefaults *myname = [NSUserDefaults standardUserDefaults];
[serverIP resignFirstResponder];
}
-(IBAction) load {
serverIP = [[NSUserDefaults standardUserDefaults] integerForKey:@"load"];
NSUserDefaults *myname = [NSUserDefaults standardUserDefaults];
}
-(IBAction) back {
[self.parentViewController dismissModalViewControllerAnimated: YES];
}
- (void)dealloc {
[super dealloc];
}
@end
Ответ №1:
serverIP — это текстовое поле. Вы можете получить текст в нем как serverIp.text, чтобы вы могли сохранить его по умолчанию для пользователя как
[[NSUserDefaults standardUserDefaults] setObject:serverIp.text forKey:@"save"];
Вы пытались сохранить само текстовое поле как целое в пользовательских настройках по умолчанию, что неверно.
Чтобы извлечь его, используйте
NSString *serverIpString = [[NSUserDefaults standardUserDefaults] objectForKey:@"save"];
Комментарии:
1. @ pratikshabhisikar это не работает, и в функции загрузки отображается предупреждение «неиспользуемая переменная serveripstring
2. Конечно, в нем будет указано неиспользуемая переменная serveripString, если вы извлекаете ее из пользовательских настроек по умолчанию и ничего с ней не делаете. Дело в том, получаете ли вы правильную строку serverip из пользовательских настроек по умолчанию?
Ответ №2:
Сделайте это, чтобы сохранить:
[[NSUserDefaults standardUserDefaults] setObject:serverIP.text forKey:@"save"];
и для извлечения:
NSString *serverIPSTR = [[NSUserDefaults standardUserDefaults] objectForKey:@"load"];
Комментарии:
1. какую ошибку вы получаете? кстати, проблемы в опубликованном вами коде заключаются в следующем: вы пытаетесь установить текстовое поле внутри NSUserDefaults (вы не можете этого сделать), а также используете integerForKey, который (как следует из названия) хранит целые числа.
2. @ giuliano galea я не получаю никакой ошибки, но при загрузке ничего не отображается.
3. Я вижу, сделайте это также:
serverIp.text = serverIPSTR;
Ответ №3:
if ([[NSUserDefaults standardUserDefaults] objectForKey:@"load"] != nil) {
serverIP = [[NSUserDefaults standardUserDefaults] objectForKey:@"load"];
} else {
serverIP = @"Your default IP address";
[[NSUserDefaults standardUserDefaults] setObject:serverIP ForKey:@"load"];
}
Хотя вместо ‘load’ я бы использовал что-то, что с меньшей вероятностью будет конфликтовать со значениями по умолчанию, такими как
myappname_serverip