C# N-沙马林
我只是想保存/恢复两倍。我所看到的是,它在连接到调试器时可以工作,但在关闭应用程序15分钟后,重新启动应用程序,它会为两个双倍恢复“-180” 这个看起来对吗?还是你认为我在节省“-180”C# N-沙马林,c#,iphone,xamarin.ios,xamarin,C#,Iphone,Xamarin.ios,Xamarin,我只是想保存/恢复两倍。我所看到的是,它在连接到调试器时可以工作,但在关闭应用程序15分钟后,重新启动应用程序,它会为两个双倍恢复“-180” 这个看起来对吗?还是你认为我在节省“-180” 这是与设备,而不是模拟器。我使用的是Map.DidUpdateUserLocation,它给出了MKUserLocationEventArgs不知怎的,它给出了-180,-180作为位置。可能是Xamarin病毒 private CLLocationCoordinate2D GetLastLocat
这是与设备,而不是模拟器。我使用的是
Map.DidUpdateUserLocation
,它给出了MKUserLocationEventArgs
不知怎的,它给出了-180,-180作为位置。可能是Xamarin病毒
private CLLocationCoordinate2D GetLastLocation()
{
var user = NSUserDefaults.StandardUserDefaults;
double lat = user.DoubleForKey ("LastPositionLat");
double lng = user.DoubleForKey ("LastPositionLng");
var location = new CLLocationCoordinate2D (lat, lng);
return location;
}
private void SaveLastLocation(CLLocationCoordinate2D coord)
{
var user = NSUserDefaults.StandardUserDefaults;
user.SetDouble (coord.Latitude, "LastPositionLat");
user.SetDouble (coord.Longitude, "LastPositionLng");
user.Synchronize ();
}
-180显然是可疑的,因为它不是0或MAX double,似乎与坐标有关。也许您是在位置管理器有时间找到用户之前抓取了他们的位置。您可以检查位置管理器提供的读数是否不超过15秒。它通常会在获取最新位置锁时为您提供最后一个位置锁-180可能是模拟器给你的“最后一个已知位置”
我不知道monotouch,但看起来你调用了正确的方法。这个问题很老了,但它突然向我袭来,原因之一是,我们看到了非常奇怪的行为,将NSUserDefaults.StandardUserdefaults存储在局部变量中,然后重复访问它 在Xamarin.iOS绑定中(至少对于MonoTouch,即非统一API)的某些内容在这里被破坏了,这可能是一个GC问题,对象失去了它的本机对等。我们的代码库中包含以下内容:
// it appears that capturing an instance of NSUserDefaults.StandardUserdefaults in a variable does not work in every case
// we have observed a voodoo bug when reading a written value from such an instance would fail (as I said, voodoo!)
// thus, we directly access standard user defaults here always via the lambda
我发现模拟器中的应用程序Id将在您从xamarin studio重新启动后更改。它可能会破坏NSUserDefaults存储,要检查它,您可以通过触摸模拟器上的应用程序图标重新启动应用程序。也许您可以使用nuget软件包来处理(PCL)设置,您可以在github上找到这些设置,或者通过nuget安装这些设置
过去,我在许多项目中使用过这个库,从未向我展示过任何奇怪的值。请注意,如果您再次看到“-180”出现,则表示代码中的某个地方正在写入该值。但这是针对设备而不是模拟器。我正在使用Map.DidUpdateUserLocation,它提供MKUserLocationEventArgs。不知怎的,它给出了-180,-180的位置。Xamarin bug?很有趣,我无法确定这是否是修复方案。我退出了我正在进行的这个辅助项目。如果有人可以确认,那么我将标记为answer它是否也在设备上运行?不确定,您可以检查它,运行时应用程序资源的路径,包含应用程序ID,并且每次启动时它都会不同。很难相信。这将破坏所有存储,没有人可以调试。我的问题在设备上,未连接到调试器。你在哪里调用
SaveLastLocation()
方法?