0

私は初心者なので、ドット表記を使用してオブジェクトのプロパティを作成およびアクセスする方法を理解しています。たとえば、プロパティ courseName を持つオブジェクト golfCourse があるため、golfCourse.courseName=@"My Course" は問題なく動作します。私の問題は、Par と Distance を含む「holeObject」を作成し、コース オブジェクト内に Hole1、Hole2 などを作成して、golfCourse.Hole1.Par でそれらにアクセスしようとすると、null が返されることです... ..誰かが私を正しい方向に向けることができますか?

どうもありがとう

HoleObject.h

#import <Foundation/Foundation.h>

@interface HoleObject : NSObject

@property(nonatomic,strong) NSString* par;
@property(nonatomic,weak) NSString* yellowDistance;
@end

HoleObject.m
#import "HoleObject.h"

@implementation HoleObject

@synthesize
par=_par,
yellowDistance=_yellowDistance,


-(void) encodeWithCoder:(NSCoder*)encoder
{
  [encoder encodeObject:self.par forKey:@"Par"];
  [encoder encodeObject:self.yellowDistance forKey:@"YellowDistance"];

}

-(id) initWithCoder:(NSCoder*)decoder
{
  if((self=[super init]))
  {
    self.par=[decoder decodeObjectForKey:@"Par"];
    self.yellowDistance=[decoder decodeObjectForKey:@"YellowDistance"];
   }
  return  self;
}
@end

CourseObject.h
#import <Foundation/Foundation.h>
#import "HoleObject.h"

@interface CourseObject : NSObject

@property(nonatomic,strong)NSString* courseName;
@property(nonatomic,strong)NSString* courseAddress;
@property(nonatomic,strong)HoleObject* hole1;
@property(nonatomic,weak)HoleObject* hole2;
etc...
@end

CourseObject.m
#import "CourseObject.h"

@implementation CourseObject

@synthesize
courseName=_courseName,
courseAddress=_courseAddress,
hole1=_hole1,
 etc;

-(void) encodeWithCoder:(NSCoder*)encoder
{
  [encoder encodeObject:self.courseName forKey:@"CourseName"];
  [encoder encodeObject:self.courseName forKey:@"CourseAddress"];
  [encoder encodeObject:self.hole1 forKey:@"Hole1"];
  etc;  
}

-(id) initWithCoder:(NSCoder*)decoder
{
  if((self = [super init]))
  {
    self.courseName=[decoder decodeObjectForKey:@"CourseName"];
    self.courseAddress=[decoder decodeObjectForKey:@"CourseAddress"];
    self.hole1 = [decoder decodeObjectForKey:@"Hole1"];
    self.hole2 = [decoder decodeObjectForKey:@"Hole2"];
etc;
  }
  return self;
}   

@end

次に、メインのView Controllerで..

- (void)viewDidLoad
{
    [super viewDidLoad];


  allCourses=[[NSMutableArray alloc] initWithCapacity:2];
  CourseObject*thisCourse;

  thisCourse=[[CourseObject alloc]init];
  thisCourse.courseName=@"Branston";
  thisCourse.courseAddress=@"The World";

  thisCourse.hole1.par=@"4";

  thisCourse.hole1.yellowDistance=@"336";

しかし、次に NSLog thisCourse.hole1.par を試してみると、null になりますか?

ご覧いただきありがとうございます。

4

1 に答える 1