Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/44.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 值在传递到另一个视图控制器时从托管对象中消失_Iphone_Core Data - Fatal编程技术网

Iphone 值在传递到另一个视图控制器时从托管对象中消失

Iphone 值在传递到另一个视图控制器时从托管对象中消失,iphone,core-data,Iphone,Core Data,我有一个使用核心数据的有点复杂的应用程序,除了一个数据似乎消失的实例外,它运行良好 我有一个托管对象类pitLayer,它有10个属性(字符串和数字)、一个显示属于父对象的所有pitLayer对象的视图控制器(viewLayers)和一个可以编辑(和创建)新pit层对象的视图控制器(editLayer) 当我创建一个新的pitLayer,然后返回到表视图时,所有属性都会正确地显示在表中。如果我立即返回editLayer,所有值都会正确显示 如果我用editLayer编辑另一个pitLayer,我

我有一个使用核心数据的有点复杂的应用程序,除了一个数据似乎消失的实例外,它运行良好

我有一个托管对象类pitLayer,它有10个属性(字符串和数字)、一个显示属于父对象的所有pitLayer对象的视图控制器(viewLayers)和一个可以编辑(和创建)新pit层对象的视图控制器(editLayer)

当我创建一个新的pitLayer,然后返回到表视图时,所有属性都会正确地显示在表中。如果我立即返回editLayer,所有值都会正确显示

如果我用editLayer编辑另一个pitLayer,我将获得除2、硬度和BottomHardness(两个字符串)之外的所有属性的正确值,其中我仍然从编辑过的上一个pitLayer获得值

如果我第一次使用现有的pitLayer加载editLayer,则硬度和底部硬度返回nil,所有其他值返回先前存储的值

这些值存储正确,可以在viewLayers中获取并返回正确的值,但在editLayer中获取时,它们不会返回正确的值。它只有两个属性,其他8个似乎工作得很好

对调试这个有什么建议吗

以下是他们的设置:


-(void)pickerView:(UIPickerView*)pickerView didSelectRow:(NSInteger)row不完整项:(NSInteger)组件{
如果(组件==kGrainTypeComponent){
layer.grainType=[[grainTypeValues对象索引:行]valueForKey:@“代码”];
}else if(component==kSecondGrainTypeComponent){
layer.secondGrainType=[[grainTypeValues对象索引:行]valueForKey:@“代码”];
}else if(组件==kHardnessComponent){
layer.Hardware=[[hardnessValues objectAtIndex:row]valueForKey:@“代码”];
}else if(component==ksecondhardensscomponent){
layer.BottomHardware=[[hardnessValues objectAtIndex:row]valueForKey:@“代码”];
}
[可自检];
}

以下是它们以后无法检索到的地方:

-(void)resetDefaults{
if(edit == YES && layer != nil){//Edit an existing layer
    if(layer.comments)
        comments.text = layer.comments;
    else
        comments.text = @"";
    if(layer.thickness){
        thicknessSlider.value = [layer.thickness floatValue];
        [self thicknessChanged];
    }
    if(layer.grainSize){
        grainSizeSlider.value = [layer.grainSize floatValue];
        [self grainSizeChanged];
    }else{
        grainSizeSlider.value = 0;
        grainSizeLabel.text = @"";
    }
    if(layer.density){
        densitySlider.value = [layer.density floatValue];
        [self densityChanged];
    }else{
        densitySlider.value = 0;
        densityLabel.text = @"";
    }
    NSString *type = layer.grainType;
    NSString *secondType = layer.secondGrainType;
    NSString *hardness = nil;
    hardness = layer.hardness;
    NSString *bottomHardness = nil;
    bottomHardness = layer.bottomHardness;
    NSString *lwc = layer.liquidWaterContent;
    NSUInteger typeIndex = 0;
    NSUInteger secondTypeIndex = 0;
    NSUInteger hardnessIndex = 0;
    NSUInteger bottomHardnessIndex = 0;
    NSLog(@"type:%@, hardness: %@, bottom hardness: %@", type, hardness, bottomHardness);
    if(type){
        for(int i = 0; i < [grainTypeValues count]; i++){
            if([[[grainTypeValues objectAtIndex:i] valueForKey:@"code"]  isEqualToString: type]){
                typeIndex = i;
                break;
            }
        }
    }
    [picker selectRow:typeIndex inComponent:kGrainTypeComponent animated:NO];
    if(secondType){
        for(int i = 0; i < [grainTypeValues count]; i++){
            if([[[grainTypeValues objectAtIndex:i] valueForKey:@"code"] isEqualToString:secondType]){
                secondTypeIndex = i;
                break;
            }
        }
    }
    [picker selectRow:secondTypeIndex inComponent:kSecondGrainTypeComponent animated:NO];
    if(hardness){
        for(int i = 0; i < [hardnessValues count]; i++){
            if([[[hardnessValues objectAtIndex:i] valueForKey:@"code"] isEqualToString:hardness]){
                hardnessIndex = i;
                break;
            }
        }
    }
    [picker selectRow:hardnessIndex inComponent:kHardnessComponent animated:NO];
    if(bottomHardness){
        for(int i = 0; i < [hardnessValues count]; i++){
            if([[[hardnessValues objectAtIndex:i] valueForKey:@"code"] isEqualToString:bottomHardness]){
                bottomHardnessIndex = i;
                break;
            }
        }
    }
    if(secondHardness)
        [picker selectRow:bottomHardnessIndex inComponent:kSecondHardnessComponent animated:NO];
    if(lwc){
        for(int i = 0; i < [lwcValues count]; i++){
            if([[[lwcValues objectAtIndex:i] valueForKey:@"code"] isEqualToString:lwc]){
                lwcSlider.value = [[[lwcValues objectAtIndex:i] valueForKey:@"value"] floatValue];
                lwcLabel.text = [[lwcValues objectAtIndex:i] valueForKey:@"name"];
                break;
            }
        }
    }else{
        lwcSlider.value = 0;
        lwcLabel.text = @"";
    }
    if(layer.formationDate){
        datePicker.date = layer.formationDate;
        [self dateChanged];
    }else{
        formationDate.text = @"";
        datePicker.date = [NSDate date];
    }

}else{//create a new layer
    comments.text = @"";
    thicknessSlider.value = 0;
    thicknessLabel.text = @"0.0";
    grainSizeSlider.value = 0;
    grainSizeLabel.text = @"";
    densityLabel.text = @"";
    densitySlider.value = 0;
    lwcLabel.text = @"";
    lwcSlider.value = 0;
    formationDate.text = @"";
    datePicker.date = [NSDate date];
    [picker selectRow:0 inComponent:kGrainTypeComponent animated:NO];
    [picker selectRow:0 inComponent:kSecondGrainTypeComponent animated:NO];     
    [picker selectRow:0 inComponent:kHardnessComponent animated:NO];
    if(secondHardness)
        [picker selectRow:0 inComponent:kSecondHardnessComponent animated:NO];
}
thicknessUnitLabel.text = layer.parentPit.depthUnit;
locationUnitLabel.text = layer.parentPit.depthUnit;
densityUnitLabel.text = layer.parentPit.densityUnit;
if([layer.parentPit.densityUnit isEqualToString:@"kg/m3"]){
    densitySlider.maximumValue = 1000;
    densitySliderDecimalCutoff = 0;
}else{
    densitySlider.maximumValue = 100;
    densitySliderDecimalCutoff = 20;
}
topLabel.text = [NSString stringWithFormat:@"%1.1F", [[layer topLocation] floatValue]];
bottomLabel.text = [NSString stringWithFormat:@"%1.1F", [[layer bottomLocation] floatValue]];
-(无效)重置默认值{
如果(编辑==YES&&layer!=nil){//编辑现有层
如果(图层注释)
comments.text=layer.comments;
其他的
comments.text=@;
if(层厚度){
thicknesslider.value=[layer.thickness floatValue];
[自身厚度改变];
}
if(layer.grainSize){
grainSizeSlider.value=[layer.grainSize floatValue];
[自颗粒化改变];
}否则{
grainSizeSlider.value=0;
grainSizeLabel.text=@;
}
if(层密度){
densitySlider.value=[layer.density floatValue];
[自密度改变];
}否则{
densitySlider.value=0;
densityLabel.text=@;
}
NSString*type=layer.grainType;
NSString*secondType=layer.secondGrainType;
NSString*硬度=零;
硬度=层硬度;
NSString*底部硬度=零;
底部硬度=层。底部硬度;
NSString*lwc=layer.liquidWaterContent;
整数类型索引=0;
NSUInteger secondTypeIndex=0;
NSU整数hardnessIndex=0;
NSU整型底部硬度指数=0;
NSLog(@“类型:%@,硬度:%@,底部硬度:%@”,类型,硬度,底部硬度);
如果(类型){
对于(int i=0;i<[grainTypeValues计数];i++){
if([[grainTypeValues objectAtIndex:i]valueForKey:@“code”]IseQualtString:type]){
类型索引=i;
打破
}
}
}
[picker selectRow:typeIndex inComponent:kGrainTypeComponent:NO];
如果(第二类){
对于(int i=0;i<[grainTypeValues计数];i++){
if([[grainTypeValues对象索引:i]valueForKey:@“code”]isEqualToString:secondType]){
第二类指数=i;
打破
}
}
}
[picker selectRow:secondTypeIndex不完整项:kSecondGrainTypeComponent动画:否];
if(硬度){
对于(int i=0;i<[hardnessValues count];i++){
if([[[hardnessValues objectAtIndex:i]valueForKey:@“code”]IsequalString:Hardware]){
硬度指数=i;
打破
}
}
}
[picker selectRow:hardnessIndex非组件:Khardness组件动画:否];
if(底部硬度){
对于(int i=0;i<[hardnessValues count];i++){
if([[[hardnessValues objectAtIndex:i]valueForKey:@“code”]IsequalString:BottomHardware]){
底部硬度指数=i;
打破
}
}
}
if(第二硬度)
[picker selectRow:BottomHardennessIndex不完整项:kseCondhardenssComponent:否];
if(lwc){
对于(int i=0;i<[lwcValues count];i++){
if([[[lwcValues objectAtIndex:i]valueForKey:@“code”]isEqualToString:lwc]){
lwcSlider.value=[[[lwcValues objectAtIndex:i]valueForKey:@“value”]floatValue];
lwcLabel.text=[[lwcValues objectAtIndex:i]valueForKey:@“name”];
打破
}
}
}否则{
lwcSlider.value=0;
lwcLabel.text=@;
}
if(图层格式日期){
datePicker.date=layer.formationDate;
[自我更新];
}否则{
formationDate.text=@;
datePicker.date=[NSDate-date];
}
}else{//创建一个新层
comments.text=@;
thicknesslider.value=0;
thicknessLabel.text=@“0.0”;
grainSizeSlider.value=0;
grainSizeLabel.text=@;
densityLabel.text=@;
densitySlider.value=0;
lwcLabel.text=@;
lwcSlider.value=0;
formationDate.text=@;
datePicker.date=[NSDate-date];
[picker selectRow:0未组件:kGrainTypeComponent:否];
[选择器选择行:0不完整项:kSecondGrainTypeComponent动画