iOS - 为什么我不能将 NSUserDefaults 中的字符串设置为位置 属性?
iOS - Why can't I set a String from NSUserDefaults to a Location property?
我遇到了不熟悉的行为。
我在 Internet 上搜索,更准确地说是在 Whosebug 上搜索,找到了很多关于只读属性的文章和帖子。
编译过程和assignment/declaration/initialization感觉有大量无形的学习经验。
我很想清楚那些情况。
假设我有一个 属性
@property (nonatomic, strong) CLLocation *location;
我已经在我的 NSUserDefault
中存储了最后一个已知的用户位置作为字符串。
如果我想用我的 lastLocation 设置我的位置 属性 的坐标,我有一个编译错误:
Assignment to readonly property
这是我的代码行:
_location.coordinate = [[MyCustomUserDefaults lastLocation] doubleValue];
这是我的 NSUserDefaults getter :
+(NSString *) lastLocation
{
return [[NSUserDefaults standardUserDefaults] objectForKey:USER_PREF_LAST_LOCATION];
}
CLLocation 的坐标 属性 是一个 CLLocationCoordinate2D 对象。你必须像
一样启动它
CLLocationCoordinate2D coordinate = CLLocationCoordinate2DMake(latitude, longitude);
并且您可以使用 NSNumber
保存纬度和经度值
[[NSUserDefaults standardUserDefaults] setObject:[NSNumber numberWithDouble:0.5] forKey:@"latitude"];
[[NSUserDefaults standardUserDefaults] setObject:[NSNumber numberWithDouble:0.5] forKey:@"longitude"];
比你得到的值
double latitude = [[[NSUserDefaults standardUserDefaults] objectForKey:@"latitude"] doubleValue];
double longitude = [[[NSUserDefaults standardUserDefaults] objectForKey:@"longitude"] doubleValue];
在 NSUserDefaults 中保存位置坐标
NSString *strlat = location.coordinate.latitude
NSString *strlong = location.coordinate.longitude
[[NSUserDefaults standardUserDefaults]setObject:strlat forKey:@"lat"];
[[NSUserDefaults standardUserDefaults] strlong:strlat forKey:@"long"];
我遇到了不熟悉的行为。
我在 Internet 上搜索,更准确地说是在 Whosebug 上搜索,找到了很多关于只读属性的文章和帖子。
编译过程和assignment/declaration/initialization感觉有大量无形的学习经验。
我很想清楚那些情况。
假设我有一个 属性
@property (nonatomic, strong) CLLocation *location;
我已经在我的 NSUserDefault
中存储了最后一个已知的用户位置作为字符串。
如果我想用我的 lastLocation 设置我的位置 属性 的坐标,我有一个编译错误:
Assignment to readonly property
这是我的代码行:
_location.coordinate = [[MyCustomUserDefaults lastLocation] doubleValue];
这是我的 NSUserDefaults getter :
+(NSString *) lastLocation
{
return [[NSUserDefaults standardUserDefaults] objectForKey:USER_PREF_LAST_LOCATION];
}
CLLocation 的坐标 属性 是一个 CLLocationCoordinate2D 对象。你必须像
一样启动它CLLocationCoordinate2D coordinate = CLLocationCoordinate2DMake(latitude, longitude);
并且您可以使用 NSNumber
保存纬度和经度值[[NSUserDefaults standardUserDefaults] setObject:[NSNumber numberWithDouble:0.5] forKey:@"latitude"];
[[NSUserDefaults standardUserDefaults] setObject:[NSNumber numberWithDouble:0.5] forKey:@"longitude"];
比你得到的值
double latitude = [[[NSUserDefaults standardUserDefaults] objectForKey:@"latitude"] doubleValue];
double longitude = [[[NSUserDefaults standardUserDefaults] objectForKey:@"longitude"] doubleValue];
在 NSUserDefaults 中保存位置坐标
NSString *strlat = location.coordinate.latitude
NSString *strlong = location.coordinate.longitude
[[NSUserDefaults standardUserDefaults]setObject:strlat forKey:@"lat"];
[[NSUserDefaults standardUserDefaults] strlong:strlat forKey:@"long"];