从另一个 NSObject 类访问 属性
Accessing Property from another NSObjectClass
我正在使用 2 个 nsobject class ,
第一个 nsobject class some 属性 并且它包含一些值。
在第二个 NSObject class 中,我想访问第一个 nsobject class 属性。
我尝试了一点,它显示空值
这是我的代码
我的第一个 NSObject class
FieldData.M
-(instancetype)initWithDictionary:(NSDictionary *)dictFieldData
{
if (self = [super init]) {
///set the field id
self.fieldId = [[dictFieldData objectForKey:@"f_id"]intValue];
self.display = [[dictFieldData objectForKey:@"f_display"]boolValue];
self.fieldLength = [[dictFieldData objectForKey:@"f_length"]intValue];
self.mandatory = [[dictFieldData objectForKey:@"f_mandatary"]boolValue];
self.strFieldLabel = [dictFieldData objectForKey:@"f_label"];
NSString *strFieldAttrib = [dictFieldData objectForKey:@"f_attribute"];
if ([strFieldAttrib.lowercaseString isEqualToString:@"alpha"]) {
self.fieldAttribute = FieldAttributeAlpha;
}
else if ([strFieldAttrib.lowercaseString isEqualToString:@"numeric"]) {
self.fieldAttribute = FieldAttributeNumeric;
}
else if ([strFieldAttrib.lowercaseString isEqualToString:@"alpha_numeric"]) {
self.fieldAttribute = FieldAttributeAlphaNumeric;
}
}return self;
}
****第二个 NSObjectClass**
SiteData.m**
-(instancetype)initWithDictionary:(NSDictionary *)dictSiteData
{
self.fieldData = [FieldData new];
if (self = [super init]) {
self.siteId = [[dictSiteData objectForKey:@"s_id"]intValue];
self.siteName = [dictSiteData objectForKey:@"site_name"];
NSLog(@"%d",self.fieldData.fieldId);
}
return self;
}
请任何人帮我做这件事
请问我做错了什么
提前致谢!!!
[FieldData new]
将默认调用 init
方法,而不是 initWithDictionary
方法。除非您已定义 init
来设置 属性 的值,否则它将默认为 nil
。您可能需要使用 [[FieldData alloc] initWithDictionary:...]
(或 [FieldData newWithDictionary:...]
,如果您定义了该方法)来创建对象。 HTH
请在 Appdelegate
声明此 属性 中编写此代码。
之后 SetValue
你的字典数据
@property(strong,nonatomic)NSDictionary * dictFieldData;
写这段代码 我的第一个 NSObject class FieldData.M
在 ViewdidLoad
中创建对象
AppDelegate *appdelegate ((AppDelegate *)[[UIApplication sharedApplication] delegate]);
///set the field id
self.fieldId = [[appdelegate.dictFieldData SetValue:(NSString*) objectForKey:@"f_id"]intValue];
///Get the field id
self.siteId = [[appdelegate.dictSiteData Valueforkey:@"s_id"]intValue];
NSLog(@"%d",appdelegate.dictSiteData);
检查此 post 从另一个 NSObjectClass
访问 属性 的答案
我正在使用 2 个 nsobject class ,
第一个 nsobject class some 属性 并且它包含一些值。 在第二个 NSObject class 中,我想访问第一个 nsobject class 属性。 我尝试了一点,它显示空值 这是我的代码 我的第一个 NSObject class FieldData.M
-(instancetype)initWithDictionary:(NSDictionary *)dictFieldData
{
if (self = [super init]) {
///set the field id
self.fieldId = [[dictFieldData objectForKey:@"f_id"]intValue];
self.display = [[dictFieldData objectForKey:@"f_display"]boolValue];
self.fieldLength = [[dictFieldData objectForKey:@"f_length"]intValue];
self.mandatory = [[dictFieldData objectForKey:@"f_mandatary"]boolValue];
self.strFieldLabel = [dictFieldData objectForKey:@"f_label"];
NSString *strFieldAttrib = [dictFieldData objectForKey:@"f_attribute"];
if ([strFieldAttrib.lowercaseString isEqualToString:@"alpha"]) {
self.fieldAttribute = FieldAttributeAlpha;
}
else if ([strFieldAttrib.lowercaseString isEqualToString:@"numeric"]) {
self.fieldAttribute = FieldAttributeNumeric;
}
else if ([strFieldAttrib.lowercaseString isEqualToString:@"alpha_numeric"]) {
self.fieldAttribute = FieldAttributeAlphaNumeric;
}
}return self;
}
****第二个 NSObjectClass** SiteData.m**
-(instancetype)initWithDictionary:(NSDictionary *)dictSiteData
{
self.fieldData = [FieldData new];
if (self = [super init]) {
self.siteId = [[dictSiteData objectForKey:@"s_id"]intValue];
self.siteName = [dictSiteData objectForKey:@"site_name"];
NSLog(@"%d",self.fieldData.fieldId);
}
return self;
}
请任何人帮我做这件事 请问我做错了什么 提前致谢!!!
[FieldData new]
将默认调用 init
方法,而不是 initWithDictionary
方法。除非您已定义 init
来设置 属性 的值,否则它将默认为 nil
。您可能需要使用 [[FieldData alloc] initWithDictionary:...]
(或 [FieldData newWithDictionary:...]
,如果您定义了该方法)来创建对象。 HTH
请在 Appdelegate
声明此 属性 中编写此代码。
之后 SetValue
你的字典数据
@property(strong,nonatomic)NSDictionary * dictFieldData;
写这段代码 我的第一个 NSObject class FieldData.M
在 ViewdidLoad
AppDelegate *appdelegate ((AppDelegate *)[[UIApplication sharedApplication] delegate]);
///set the field id
self.fieldId = [[appdelegate.dictFieldData SetValue:(NSString*) objectForKey:@"f_id"]intValue];
///Get the field id
self.siteId = [[appdelegate.dictSiteData Valueforkey:@"s_id"]intValue];
NSLog(@"%d",appdelegate.dictSiteData);
检查此 post 从另一个 NSObjectClass
访问 属性 的答案