0
正如我新手我理解如何使用點符號創建和訪問一個對象的屬性..例如,我有一個對象golfCourse與財產courseName所以golfCourse.courseName = @「我的課程」工程確定。我的問題是,如果我創建一個包含Par和Distance的「holeObject」,並在我的Course Object內創建Hole1,Hole2等試圖通過golfCourse.Hole1.Par返回null ...我的各種搜索沒有找到我任何清晰..有人能指引我正確的方向嗎?如何在Xcode/Obj C中的另一個自定義對象中訪問對象的屬性?
非常感謝
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
然後在我的主視圖控制器..
- (void)viewDidLoad
{
[super viewDidLoad];
allCourses=[[NSMutableArray alloc] initWithCapacity:2];
CourseObject*thisCourse;
thisCourse=[[CourseObject alloc]init];
[email protected]"Branston";
[email protected]"The World";
[email protected]"4";
[email protected]"336";
但如果我再嘗試的NSLog thisCourse.hole1.par即時得到空?
感謝您的期待。
你能提供一些與你的問題相關的示例代碼? –
與你的問題沒有直接關係,但可能會讓你的事情在未來變得更容易一些......而不是創建18個(就像你在'答案'中所說的)洞屬性,你可以創建一個屬性爲NSArray(或NSMutableArray),稱之爲「洞」,並在其中創建18個洞。您仍然需要初始化'holes'屬性以及18個洞,但是您可以將18個初始化變成一個循環,從而大大減少代碼量。此外,你可以在周圍傳遞'NSInteger'(或類似的東西),並使用該索引指向該課程的特定孔。 – Kitsune