Tos*_*lji 10 iphone objective-c nsuserdefaults cllocationmanager ios
我是iphone开发的新手,我想存储CLLocationCoordinate2D对象NSUserDefaults.我在尝试
[defaults setObject:location forKey:@"userLocation"];
Run Code Online (Sandbox Code Playgroud)
但它给出错误'将CLLocationCoordinate2D发送到不兼容类型id的参数'
那么如何CLLocationCoordinate2D存入NSUserDefaults?谢谢.
Tos*_*lji 34
正如pdrcabrod所说,
"默认的对象必须是一个属性列表,也就是一个实例NSData,NSString,NSNumber,NSDate,NSArray,或NSDictionary."
我用它来存储,
NSNumber *lat = [NSNumber numberWithDouble:location.latitude];
NSNumber *lon = [NSNumber numberWithDouble:location.longitude];
NSDictionary *userLocation=@{@"lat":lat,@"long":lon};
[[NSUserDefaults standardUserDefaults] setObject:userLocation forKey:@"userLocation"];
[[NSUserDefaults standardUserDefaults] synchronize];
Run Code Online (Sandbox Code Playgroud)
并访问使用,
NSDictionary *userLoc=[[NSUserDefaults standardUserDefaults] objectForKey:@"userLocation"];
NSLog(@"lat %@",[userLoc objectForKey:@"lat"]);
NSLog(@"long %@",[userLoc objectForKey:@"long"]);
Run Code Online (Sandbox Code Playgroud)
And*_*kha 15
这就是我要做的:
NSData *data = [NSData dataWithBytes:&coordinate length:sizeof(coordinate)];
[[NSUserDefaults standardUserDefaults] setObject:data forKey:@"key"];
[[NSUserDefaults standardUserDefaults] synchronize];
Run Code Online (Sandbox Code Playgroud)
然后你可以像这样检索它:
NSData *data = [[NSUserDefaults standardUserDefaults] objectForKey:@"key"];
CLLocationCoordinate2D coordinate;
[data getBytes:&coordinate length:sizeof(coordinate)];
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9948 次 |
| 最近记录: |