gpt4 book ai didi

ios - 设置 FetchedResultsController 中的特殊结果

转载 作者:行者123 更新时间:2023-11-28 22:11:58 24 4
gpt4 key购买 nike

   +-----------+           +-----------+  
| -Parada- | | -Autobus- |
+-----------+ +-----------+
| nombre | | circuito |
+-------------+ +-------------+
|Relationships| |Relationships|
+-------------+ +-------------+
| byParada |<--------> | parada |
+-----------+ +-----------+

我正在尝试根据电路之间的关系获取 Paradas 列表。

例如:

 Autobus 1 has Circuito=1 and Parada=Town
Autobus 2 has Circuito=2 and Parada=City
Autobus 3 has Circuito=3 and Parada=Coast
Autobus 4 has Circuito=4 and Parada=Park

因此,我试图从已定义的 Parada 中获取具有更高电路的 Paradas 列表,这不容易解释,但在我的应用程序中,您有两个具有相同 Parada 列表的选择器,具体取决于您选择的 Parada在第一个 Picker 中,第二个将仅显示具有更高 Circuito 的 Parada。

例如,如果您在第一个选择器中选择了“城市”,则第二个选择器会让您选择“海岸”或“公园”。

这是我要修复的代码:

- (void)setupFetchedResultsController
{
// 0 - Ensure you have a MOC
if (!self.managedObjectContext) {
NSLog(@"RolePickerTVCell wasn't given a Managed Object Context ... so it's going to go get one itself!");
RCAppDelegate *ad = [[UIApplication sharedApplication] delegate];
self.managedObjectContext = ad.managedObjectContext;
}

// 1 - Decide what Entity you want
NSString *entityName = @"Parada"; // Put your entity name here
NSLog(@"RolePickerTVCell is Setting up a Fetched Results Controller for the Entity named %@", entityName);

// 2 - Request that Entity
NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:entityName];

// 3 - Filter it if you want
// Here's the problem:

NSString *predString = [NSString stringWithFormat:@"ANY byParada.circuito > '%@'", self.fetchedResultsController];
request.predicate = [NSPredicate predicateWithFormat:predString];

// It shows nothing...
NSLog(@"list of Paradas: %@", self.fetchedResultsController);



// 4 - Sort it if you want
request.sortDescriptors = [NSArray arrayWithObject:[NSSortDescriptor sortDescriptorWithKey:@"nombre"
ascending:YES
selector:@selector(localizedCaseInsensitiveCompare:)]];
// 5 - Fetch it
self.fetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:request
managedObjectContext:self.managedObjectContext
sectionNameKeyPath:nil
cacheName:nil];
[self.fetchedResultsController performFetch:nil];

NSLog(@"The following roles were fetched for the Picker by ORIGENPickerTVCell:");
for (Parada *fetchedOrigen in [self.fetchedResultsController fetchedObjects]) {
NSLog(@"List of Paradas: %@", fetchedOrigen.nombre);
}


}

最佳答案

您的谓词设置有误。
格式化应发生在谓词构造级别:

request.predicate = [NSPredicate predicateWithFormat:@"byParada.circuito > %@",currentCircuitoAsNSNumber];

其中 currentCircuitoAsNSNumber 是当前选择的“circuito”,类型为 NSNumber

关于ios - 设置 FetchedResultsController 中的特殊结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22694976/

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