NSPredicate 调用关系
NSPredicate to call relationships
我目前以这种方式设置我的核心数据模型。
我目前也使用 fetchedResultController,我尝试使用 NSPredicate 将值与传入的坐标进行比较。我试过:
var location: Location!
func setUpFetchedResultsViewController() {
let fetchRequest: NSFetchRequest<FlickrImage> = FlickrImage.fetchRequest()
let sortDescriptor = NSSortDescriptor(key: "latitude", ascending: true)
let predicate = NSPredicate(format: "locations.latitude == %@", location.latitude)
fetchRequest.predicate = predicate
fetchRequest.sortDescriptors = [sortDescriptor]
fetchResultController = NSFetchedResultsController(fetchRequest: fetchRequest, managedObjectContext: dataController.viewContext, sectionNameKeyPath: nil, cacheName: nil)
fetchResultController.delegate = self
do {
try fetchResultController.performFetch()
} catch {
print(error.localizedDescription)
}
}
我也试过:
let predicate = NSPredicate(format: "locations == %@", location)
要么是我收到错误 'EXC_BAD_ACCESS',要么是 returns 一个空数组。
这对我有用,试一试:
func setUpFetchedResultsViewController() {
let request: NSFetchRequest<FlickrImage> = FlickrImage.fetchRequest()
request.predicate = NSPredicate(format: "locations == %@", locations)
request.sortDescriptors = [NSSortDescriptor(key: "latitude", ascending: true)]
do {
return try context.fetch(request)
} catch {
print("Error fetching data from context: \(error)")
}
return []
}
如果你想访问纬度,你首先需要检查 locations 是否为 nil:
func setUpFetchedResultsViewController() {
let request: NSFetchRequest<FlickrImage> = FlickrImage.fetchRequest()
request.predicate = NSPredicate(format: "locations != nil AND locations.latitude == %@", locations.latitude)
request.sortDescriptors = [NSSortDescriptor(key: "latitude", ascending: true)]
do {
return try context.fetch(request)
} catch {
print("Error fetching data from context: \(error)")
}
return []
}
此外,考虑将位置更改为位置,因为它是一对一的关系。
我目前以这种方式设置我的核心数据模型。
我目前也使用 fetchedResultController,我尝试使用 NSPredicate 将值与传入的坐标进行比较。我试过:
var location: Location!
func setUpFetchedResultsViewController() {
let fetchRequest: NSFetchRequest<FlickrImage> = FlickrImage.fetchRequest()
let sortDescriptor = NSSortDescriptor(key: "latitude", ascending: true)
let predicate = NSPredicate(format: "locations.latitude == %@", location.latitude)
fetchRequest.predicate = predicate
fetchRequest.sortDescriptors = [sortDescriptor]
fetchResultController = NSFetchedResultsController(fetchRequest: fetchRequest, managedObjectContext: dataController.viewContext, sectionNameKeyPath: nil, cacheName: nil)
fetchResultController.delegate = self
do {
try fetchResultController.performFetch()
} catch {
print(error.localizedDescription)
}
}
我也试过:
let predicate = NSPredicate(format: "locations == %@", location)
要么是我收到错误 'EXC_BAD_ACCESS',要么是 returns 一个空数组。
这对我有用,试一试:
func setUpFetchedResultsViewController() {
let request: NSFetchRequest<FlickrImage> = FlickrImage.fetchRequest()
request.predicate = NSPredicate(format: "locations == %@", locations)
request.sortDescriptors = [NSSortDescriptor(key: "latitude", ascending: true)]
do {
return try context.fetch(request)
} catch {
print("Error fetching data from context: \(error)")
}
return []
}
如果你想访问纬度,你首先需要检查 locations 是否为 nil:
func setUpFetchedResultsViewController() {
let request: NSFetchRequest<FlickrImage> = FlickrImage.fetchRequest()
request.predicate = NSPredicate(format: "locations != nil AND locations.latitude == %@", locations.latitude)
request.sortDescriptors = [NSSortDescriptor(key: "latitude", ascending: true)]
do {
return try context.fetch(request)
} catch {
print("Error fetching data from context: \(error)")
}
return []
}
此外,考虑将位置更改为位置,因为它是一对一的关系。