核心数据基础知识

时间:2014-06-28 12:09:37

标签: ios objective-c uitableview core-data

再次需要帮助!在应用程序启动时,我需要创建2个实体:提供者和国家/地区。我觉得他们是这样的:

-(NSArray *) resultArray {

    Provider *orangeFR = [NSEntityDescription insertNewObjectForEntityForName:@"Provider" inManagedObjectContext:self.managedObjectContext];
    orangeFR.name = [NSString stringWithFormat:@"Orange"];
    orangeFR.adress = [NSString stringWithFormat:@"Champ De Mars"];
    Provider *sfrFR = [NSEntityDescription insertNewObjectForEntityForName:@"Provider" inManagedObjectContext:self.managedObjectContext];
    sfrFR.name = [NSString stringWithFormat:@"SFR"];
    sfrFR.adress = [NSString stringWithFormat:@"SFR Adress"];
    NSArray *FRProviders = @[orangeFR, sfrFR];

    Provider *BeelineRU = [NSEntityDescription insertNewObjectForEntityForName:@"Provider" inManagedObjectContext:self.managedObjectContext];
    BeelineRU.name = [NSString stringWithFormat:@"Beeline"];
    BeelineRU.adress = [NSString stringWithFormat:@"Beeline adress"];
    Provider *MTSRU = [NSEntityDescription insertNewObjectForEntityForName:@"Provider" inManagedObjectContext:self.managedObjectContext];
    MTSRU.name = [NSString stringWithFormat:@"MTS"];
    MTSRU.adress = [NSString stringWithFormat:@"MTS Adress"];
    NSArray *RUProviders = @[BeelineRU, MTSRU];

    Country *france = [NSEntityDescription insertNewObjectForEntityForName:@"Country" inManagedObjectContext:self.managedObjectContext];
    france.name = [NSString stringWithFormat:@"France"];
    [france addProvider:[NSSet setWithArray:FRProviders]];

    Country *russia = [NSEntityDescription insertNewObjectForEntityForName:@"Country" inManagedObjectContext:self.managedObjectContext];
    russia.name = [NSString stringWithFormat:@"Russia"];
    [russia addProvider:[NSSet setWithArray:RUProviders]];

    NSArray *countries = @[france, russia];
    return countries;

}

如何在下次发布时使用这些数据而不再创建它们?我如何计算Country对象?将Provider传递给下一个控制器的正确方法是什么?如何计算该控制器中的Provider?

  -(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    MSTProviderViewController *providerViewController = [[MSTProviderViewController alloc]init];
    [self.navigationController pushViewController:providerViewController animated:YES];

    NSArray *countries = [self resultArray];
    Country *selectedCountry = countries[indexPath.row];
    Provider *selectedProvider = selectedCountry.provider; //[selectedCountry valueForKey:@"provider"];
    //NSArray *selectedProvider = [selectedCountry valueForKey:@"provider"];
    providerViewController.providers = selectedProvider;

}

1 个答案:

答案 0 :(得分:0)

  

如何在下次发布时使用这些数据而不再创建它们?

从Core Data商店中获取它。例如,使用NSFetchRequest

  

如何计算国家/地区对象?

NSArray *resultArray = [self resultArray];
NSInteger count = [resultArray count];
  

将Provider传递给下一个控制器的正确方法是什么?如何计算该控制器中的Provider?

在创建下一个控制器调用的方法中

nextController.providerArray = self.providerArray;

如果这对您没有帮助,请尝试改进您的问题。