NSFetchRequest具有不同的记录和Uipickerview



我试图以获取结果填充UIPickerView。我能够做到。由于有重复项,我决定使用以下代码获取不同的记录,并且只有所需的属性。该代码正常工作,因为数组array1&dictlevel1具有正确的数据(如下所示)。我不知道如何将array1进入选择器视图?

    NSError *error;
    NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
    NSEntityDescription *entity = [NSEntityDescription entityForName:@"Factors" inManagedObjectContext:managedObjectContext];
    [fetchRequest setEntity:entity];
    [fetchRequest setResultType:NSDictionaryResultType];
    [fetchRequest setReturnsDistinctResults:YES];
    [fetchRequest setPropertiesToFetch:@[@"level1"]];
    self.title = @"Factors";
    array1 = [[NSArray alloc] init];
    array1 = [managedObjectContext executeFetchRequest:fetchRequest error:&error]; 
    NSDictionary *dictlevel1 = [array1 dictionaryWithValuesForKeys:[NSArray arrayWithObject:@"level1"]];
    NSLog(@"%@", array1[1]);
    NSLog(@"%@", [dictlevel1 dictionaryWithValuesForKeys:[NSArray arrayWithObject:@"level1"]]);

这是NSLog的输出:

2012-10-23 14:55:47.774 CoreData2[1477:c07] (
        {
        level1 = "External Combustion Boilers";
    },
        {
        level1 = "Internal Combustion Engines";
    },
        {
        level1 = "Industrial Processes";
    },
        {
        level1 = "Petroleum and Solvent Evaporation";
    },
        {
        level1 = "Waste Disposal";
    },
        {
        level1 = "Stationary Source Fuel Combustion";
    },
        {
        level1 = "Miscellaneous Area Sources";
    },
        {
        level1 = "Mobile Sources";
    },
        {
        level1 = "Solvent Utilization";
    },
        {
        level1 = "Storage and Transport";
    },
        {
        level1 = "Waste Disposal, Treatment, and Recovery";
    },
        {
        level1 = "Natural Sources";
    }
)
2012-10-23 14:55:47.775 CoreData2[1477:c07] {
    level1 =     (
        "External Combustion Boilers",
        "Internal Combustion Engines",
        "Industrial Processes",
        "Petroleum and Solvent Evaporation",
        "Waste Disposal",
        "Stationary Source Fuel Combustion",
        "Miscellaneous Area Sources",
        "Mobile Sources",
        "Solvent Utilization",
        "Storage and Transport",
        "Waste Disposal, Treatment, and Recovery",
        "Natural Sources"
    );
}

我建议您在结果字典中使用这样的代码片段为给定键(例如endcalyear)获得明显的结果(@distinctUnionOfObjects):

NSArray *distinctYears = [periodsFilteredByDates
                valueForKeyPath:@"@distinctUnionOfObjects.endCalYear"];

pickerView:numberOfRowsInComponent:中,您可以用distinctYears.count返回行数,在pickerView:titleForRow:forComponent:中,您可以使用这样的代码段来返回每个标题的字符串:

NSNumber *endCalYear = distinctResults[row];
NSString *rowTitle = [NSString stringWithFormat:@"%@",endCalYear];
return rowTitle;

UITableView一样,您必须处理UIPickerViewDataSourceUIPickerViewDelegate协议方法,这些方法为Picker提供了数据。有关具体信息,请参见链接的文档。

最新更新