Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.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
Core data 仅在存储的最后一个子记录上指向父记录的核心数据存储链接_Core Data_Xcode4_Relationships - Fatal编程技术网

Core data 仅在存储的最后一个子记录上指向父记录的核心数据存储链接

Core data 仅在存储的最后一个子记录上指向父记录的核心数据存储链接,core-data,xcode4,relationships,Core Data,Xcode4,Relationships,我用XCode 4创建了一个核心数据模型,它做了一些奇怪的事情。我有一个名为ProbeObj的实体,它与另一个名为SmokeObj的实体有定义的关系。在图中,我在ProbObj上创建了关系ProbeToSmoke,在SmokeObj上创建了关系SmokeToProbe,并将其设置为ProbeObj上定义的反向关系。我为这两个对象生成了.h和.m文件,并将它们包含在为处理数据插入而创建的类中。这是: // // SmokeObj.h // Stoker Monitor // // Creat

我用XCode 4创建了一个核心数据模型,它做了一些奇怪的事情。我有一个名为ProbeObj的实体,它与另一个名为SmokeObj的实体有定义的关系。在图中,我在ProbObj上创建了关系ProbeToSmoke,在SmokeObj上创建了关系SmokeToProbe,并将其设置为ProbeObj上定义的反向关系。我为这两个对象生成了.h和.m文件,并将它们包含在为处理数据插入而创建的类中。这是:

//
//  SmokeObj.h
//  Stoker Monitor
//
//  Created by NCGrimbo on 6/3/11.
//  Copyright (c) 2011 __MyCompanyName__. All rights reserved.
//

#import <Foundation/Foundation.h>
#import <CoreData/CoreData.h>

@class BlowerObj, CurBlowerObj, CurProbeObj, ProbeObj, StokerObj;

@interface SmokeObj : NSManagedObject {
@private
}
@property (nonatomic, retain) NSDate * dtEnd;
@property (nonatomic, retain) NSDate * dtStart;
@property (nonatomic, retain) StokerObj * SmokeToStoker;
@property (nonatomic, retain) ProbeObj * SmokeToProbe;
@property (nonatomic, retain) CurProbeObj * SmokeToCurProbe;
@property (nonatomic, retain) CurBlowerObj * SmokeToCurBlower;
@property (nonatomic, retain) BlowerObj * SmokeToBlower;

@end

//
//  SmokeObj.m
//  Stoker Monitor
//
//  Created by NCGrimbo on 6/3/11.
//  Copyright (c) 2011 __MyCompanyName__. All rights reserved.
//

#import "SmokeObj.h"
#import "BlowerObj.h"
#import "CurBlowerObj.h"
#import "CurProbeObj.h"
#import "ProbeObj.h"


@implementation SmokeObj
@dynamic dtEnd;
@dynamic dtStart;
@dynamic SmokeToStoker;
@dynamic SmokeToProbe;
@dynamic SmokeToCurProbe;
@dynamic SmokeToCurBlower;
@dynamic SmokeToBlower;

@end


//
//  ProbeObj.h
//  Stoker Monitor
//
//  Created by NCGrimbo on 6/3/11.
//  Copyright (c) 2011 __MyCompanyName__. All rights reserved.
//

#import <Foundation/Foundation.h>
#import <CoreData/CoreData.h>

@class SmokeObj;

@interface ProbeObj : NSManagedObject {
@private
}
@property (nonatomic, retain) NSDate * dtDataRead;
@property (nonatomic, retain) NSNumber * fCurTemp;
@property (nonatomic, retain) NSNumber * fHighTemp;
@property (nonatomic, retain) NSNumber * fLowTemp;
@property (nonatomic, retain) NSNumber * fTargetTemp;
@property (nonatomic, retain) NSNumber * nAlarmType;
@property (nonatomic, retain) NSNumber * nCtrlAlrmType;
@property (nonatomic, retain) NSString * sBlower;
@property (nonatomic, retain) NSString * sID;
@property (nonatomic, retain) NSString * sUserAssignedName;
@property (nonatomic, retain) SmokeObj * ProbeToSmoke;

@end

//
//  ProbeObj.m
//  Stoker Monitor
//
//  Created by NCGrimbo on 6/3/11.
//  Copyright (c) 2011 __MyCompanyName__. All rights reserved.
//

#import "ProbeObj.h"


@implementation ProbeObj
@dynamic dtDataRead;
@dynamic fCurTemp;
@dynamic fHighTemp;
@dynamic fLowTemp;
@dynamic fTargetTemp;
@dynamic nAlarmType;
@dynamic nCtrlAlrmType;
@dynamic sBlower;
@dynamic sID;
@dynamic sUserAssignedName;
@dynamic ProbeToSmoke;

@end
//
//SmokeObj.h
//加煤机监控器
//
//由NCGrimbo于2011年6月3日创建。
//版权所有(c)2011年\uuuu MyCompanyName\uuuuu。版权所有。
//
#进口
#进口
@鼓风机BJ类、路缘石RobJ类、CurProbeObj类、ProbeObj类、StokerObj类;
@接口SmokeObj:NSManagedObject{
@私人的
}
@财产(非原子,保留)NSDate*dtEnd;
@属性(非原子,保留)NSDate*dtStart;
@财产(非原子,保留)StokerObj*Smoketostostoker;
@属性(非原子,保留)ProbeObj*SmokeToProbe;
@属性(非原子,保留)CurProbeObj*SmokeToCurProbe;
@不动产(非原子,保留)路缘石Robj*SmokeToCurBlower;
@属性(非原子,保留)BlowerObj*SmokeToBlower;
@结束
//
//SmokeObj.m
//加煤机监控器
//
//由NCGrimbo于2011年6月3日创建。
//版权所有(c)2011年\uuuu MyCompanyName\uuuuu。版权所有。
//
#输入“SmokeObj.h”
#导入“BlowerObj.h”
#导入“Robj.h”
#导入“CurProbeObj.h”
#导入“ProbeObj.h”
@OBJ的实现
@动态数据终端;
@动态dtStart;
@动态吸烟机;
@动态烟雾探测器;
@动态烟雾探头;
@动态烟雾发生器;
@动态烟雾发生器;
@结束
//
//ProbeObj.h
//加煤机监控器
//
//由NCGrimbo于2011年6月3日创建。
//版权所有(c)2011年\uuuu MyCompanyName\uuuuu。版权所有。
//
#进口
#进口
@OBJ类;
@接口问题bj:NSManagedObject{
@私人的
}
@属性(非原子,保留)NSDate*dtDataRead;
@财产(非原子,保留)NSNumber*fCurTemp;
@财产(非原子,保留)NSNumber*fHighTemp;
@属性(非原子,保留)NSNumber*fLowTemp;
@属性(非原子,保留)NSNumber*fTargetTemp;
@属性(非原子,保留)NSNumber*nAlarmType;
@属性(非原子,保留)NSNumber*nCtrlAlrmType;
@属性(非原子,保留)NSString*sBlower;
@属性(非原子,保留)NSString*sID;
@属性(非原子,保留)NSString*SuserAsignedName;
@属性(非原子,保留)SmokeObj*ProbeToSmoke;
@结束
//
//ProbeObj.m
//加煤机监控器
//
//由NCGrimbo于2011年6月3日创建。
//版权所有(c)2011年\uuuu MyCompanyName\uuuuu。版权所有。
//
#导入“ProbeObj.h”
@实现问题bj
@动态数据读取;
@动态fCurTemp;
@动态fHighTemp;
@动态流动温度;
@动态温度;
@动态分析型;
@动态nCtrlAlrmType;
@动态sBlower;
@动态sID;
@动态SUSERASignedName;
@动态探头;
@结束
我的代码从网站收集数据,对其进行解析,然后将记录添加到ProbObj表中。SmokeObj的数据被传递到程序的这一部分,并存储为self.smoke以供此次运行。下面是处理此问题的代码,删除了不相关的部分:

- (void)connectionDidFinishLoading:(NSURLConnection *)connection
{

    NSString *responseString = [[NSString alloc] initWithData:responseData encoding:NSUTF8StringEncoding];

    NSError *error;
    NSArray *chunks = [responseString componentsSeparatedByString: @"{"];
    [responseString release];
    NSArray *details;
    NSArray *arrTheData;
    Boolean bIsSensor = false;
    Boolean bIsBlower = false;
    Boolean bStokerFound = false;
    NSRange textRange;


    for (int i = 0; i < [chunks count]; i++){

        if(!bStokerFound){
        }
        else{
            if ((!bIsBlower) && (!bIsSensor)){
            }
            else{
                if (bIsSensor){
                    //Set the probe data that is fixed
                    ProbeObj *newProbe = [NSEntityDescription insertNewObjectForEntityForName:@"ProbeObj" inManagedObjectContext:[Common managedObjectContext]];
                    newProbe.dtDataRead = [NSDate date];
                    //newProbe.nSmokeID = [NSNumber numberWithInt: 0];
                    NSLog(@"Setting ProbeToSmoke = %@", self.SmokeForThisRun);
                    newProbe.ProbeToSmoke = self.SmokeForThisRun;

                    //Parse the sensor information then save the data  {Parse code removed.}

                    //Save the Probe Record
                    if (![[Common managedObjectContext] save:&error]) {
                        NSLog(@"Whoops, couldn't save: %@", [error localizedDescription]);
                        UIAlertView *saveError = [[UIAlertView alloc]initWithTitle:@"Error Saving the Probe Data." message:[error localizedDescription] delegate:self cancelButtonTitle:@"OK" otherButtonTitles: nil];
                        [saveError show];
                        [saveError release];
                    }
                    else{   
                       NSLog(@"Data saved for %@", newProbe);
                    }
                }
            }
        }
    }
}
-(void)连接dFinishLoading:(NSURLConnection*)连接
{
NSString*responseString=[[NSString alloc]initWithData:responseData编码:NSUTF8StringEncoding];
n错误*错误;
NSArray*chunks=[responseString componentsSeparatedByString:@“{”];
[责任释放];
NSArray*详细信息;
NSArray*到达数据;
布尔值=假;
布尔值=假;
布尔bStokerFound=false;
NSRange textRange;
对于(int i=0;i<[块计数];i++){
如果(!bStokerFound){
}
否则{
如果((!bIsBlower)&(!bIsSensor)){
}
否则{
中频(双频传感器){
//设置固定的探针数据
ProbeObj*newProbe=[NSEntityDescription insertNewObjectForEntityForName:@“ProbeObj”在managedObjectContext:[Common managedObjectContext]]中;
newProbe.dtDataRead=[NSDate];
//newProbe.nSmokeID=[NSNumber numberwhithint:0];
NSLog(@“设置ProbeToSmoke=%@”,self.smoke用于此次运行);
newProbe.ProbeToSmoke=本次运行的self.smoke;
//解析传感器信息,然后保存数据{解析代码已删除。}
//保存探测记录
如果(![[Common managedObjectContext]保存:&错误]){
NSLog(@“哎哟,无法保存:%@,[error localizedDescription]);
UIAlertView*saveError=[[UIAlertView alloc]initWithTitle:@“保存探测数据时出错。”消息:[错误本地化描述]委托:自取消按钮:@“确定”其他按钮:无];
[保存错误显示];
[保存错误释放];
}
否则{
NSLog(@“为%@保存的数据”,newProbe);
}
}
}
}
}
}
此代码每1分钟调用一次,以从网站获取最新信息

我遇到的问题是,当我通过代码或SQLLite数据库查看器应用程序查看数据时,唯一设置了SmokeObj的记录是最后一条记录。例如,如果SmokeObj=1,并且我收集ProbeObj数据3次,则只有最后一条ProbeObj的SmokeObj=1。另外两条记录的SmokeObj值为空。如果我只收集了c收集1个ProbeObj,则它将具有正确的SmokeObj值。无论我收集数据1次还是100次,问题都会发生。只有最后收集的记录具有正确的SmokeObj

任何帮助都将不胜感激


-NCGrimbo

您的
SmokeObj.SmokeToProbe
关系设置为一对一。这意味着