gpt4 book ai didi

iphone - float 的 Core-Data 谓词过滤

转载 作者:行者123 更新时间:2023-11-29 05:01:09 25 4
gpt4 key购买 nike

基本上,我有一个 MKMapView 位置数据库,当点击每个注释上的详细信息公开按钮时,它会显示有关该位置的更多信息,例如他们的网站和电话号码。

问题是,在我的数据库中,某些坐标只有 4 或 5 位小数点,而不是 6 位,因此当点击按钮时,应用程序会崩溃。为了阻止这种情况,我在 UIAlertView 中添加了“我们无法找到更多信息”有什么方法可以更好地使用我的谓词吗?

NSString *lat = [NSString stringWithFormat:@"%.6f", view.annotation.coordinate.latitude];
NSString *lon = [NSString stringWithFormat:@"%.6f", view.annotation.coordinate.longitude];
NSFetchRequest *request = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Stores" inManagedObjectContext:_managedObjectContext];
[request setEntity:entity];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"Latitude == %@ && Longitude == %@", lat, lon];
[request setPredicate:predicate];

NSError *error = nil;
NSArray *stores = [_managedObjectContext executeFetchRequest:request error:&error];
[request release];
if (![stores count]) {
UIAlertView *alert = [[[UIAlertView alloc]initWithTitle:@"Error" message:@"Sorry, we are unable to locate more information for this location." delegate:nil cancelButtonTitle:@"Okay" otherButtonTitles: nil]autorelease];
[alert show];
} else {



Stores *currentStore = [stores objectAtIndex:0];
NSLog(@"current store %@", currentStore);

AddressAnnotation *annotation = view.annotation;

MoreInfoTable *moreInfoView = [[MoreInfoTable alloc] initWithStyle:UITableViewStyleGrouped];
moreInfoView.currentStore = currentStore;
moreInfoView.managedObjectContext = self.managedObjectContext;
moreInfoView.title = annotation.title ;
moreInfoView.getWebsite =[NSURL URLWithString:annotation.website];
moreInfoView.getDirections = [NSURL URLWithString:[NSString stringWithFormat:@"http://maps.google.com/maps?saddr=%f,%f&daddr=%f,%f", mapView.userLocation.coordinate.latitude, mapView.userLocation.coordinate.longitude, annotation.coordinate.latitude, annotation.coordinate.longitude]];
moreInfoView.footer = [NSString stringWithFormat:@"%.1f miles away", annotation.distanceFromLocation];
moreInfoView.address = annotation.address;
moreInfoView.getPhoneNumber = [NSMutableString stringWithString:annotation.phoneNumber];
moreInfoView.lat = view.annotation.coordinate.latitude;
moreInfoView.lon = view.annotation.coordinate.longitude;

[self.navigationController pushViewController:moreInfoView animated:YES];
[moreInfoView release];

}

}

最佳答案

我假设您正在尝试获取所有具有纬度或经度的商店实体。您应该检查 Latitude 或 Longitude != nil 而不是与 6 位十进制字符串进行比较。

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"Latitude != nil && Longitude != nil"];
[request setPredicate:predicate];

关于iphone - float 的 Core-Data 谓词过滤,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6928612/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com