将 UITextField 附加到 NSUserDefaults

Attaching UITextField to NSUserDefaults

我是初学者,我正在尝试弄清楚如何将文本从文本字段连同坐标上传到服务器,但我需要将文本字段添加到 userdefaults。

UITextfield 在我的 ViewController 中,而服务器的坐标和 post 在一个单独的对象中 class。

教程或示例代码将非常有帮助。

下面,我附上了我用来上传坐标的相关代码。

我需要帮助将另一个 class 中的 UITextfield 中的文本添加和上传到下面的代码。

Singleton.m

@implementation Singleton {
    CLLocation *location;
    CLLocationManager *locationManager;
    NSMutableData *responseData;
}

- (id)init {
    if (self = [super init]) {

        NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
        [userDefaults setDouble:location.coordinate.latitude forKey:@"latitude"];
        [userDefaults setDouble:location.coordinate.longitude forKey:@"longitude"];

        [userDefaults synchronize];

    }
    return self;
}

- (void) timerDidFire:(NSTimer *)timer
{
    NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
    if (([userDefaults doubleForKey:@"latitude"] != location.coordinate.latitude) || ([userDefaults doubleForKey:@"longtitude"] != location.coordinate.longitude)) {

        NSMutableURLRequest *request = [NSMutableURLRequest
                                    requestWithURL:[NSURL URLWithString:@"http://setslocation.php"]];

        NSDictionary *requestData = [[NSDictionary alloc] initWithObjectsAndKeys:
                                 [NSString stringWithFormat:@"%f", location.coordinate.longitude], @"longitude",
                                 [NSString stringWithFormat:@"%f", location.coordinate.latitude], @"latitude",
                                 nil];
        NSError *error;
        NSData *postData = [NSJSONSerialization dataWithJSONObject:requestData options:0 error:&error];
        [request setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
        [request setHTTPMethod:@"POST"];
        [request setHTTPBody:postData];
        [NSURLConnection connectionWithRequest:request delegate:self];

        [userDefaults setDouble:location.coordinate.latitude forKey:@"latitude"];
        [userDefaults setDouble:location.coordinate.longitude forKey:@"longtitude"];
        [userDefaults synchronize];
    }
}

首先将您的文本字段值保存到 NSUserDefaults 并同步。您可以从 NSUserDefaults 获取项目中任何位置的值。

设置如下值:

  [[NSUserDefaults standardUserDefaults] setObject:@"your textfield value" forKey:@"your key name"];
    [[NSUserDefaults standardUserDefaults] synchronize];

获取值:

NSLog(@"%@",[[NSUserDefaults standardUserDefaults] objectForKey:@"your key name"]);

确保你写相同的键名。