Как установить значение для пользовательского свойства объекта, которое является свойством другого пользовательского объекта - PullRequest
0 голосов
/ 13 декабря 2018

Это то, что у меня есть,

@inerface Face : NSObject    
   @property (nonatomic, assign) long idO;
   @property (nonatomic, assign) NSString *text;
   @property (nonatomic, assign) Eyes *eyes;
@end

@interface Eyes : NSObject
   @property(nonatomic, assign) NSString *color;
   @property(nonatomic, assign) NSNumber *size;
@end

Тогда я хочу сделать это:

Face *f  = [[Face alloc] init];
f.text = @"trying";
f.eyes.color = @"Blue";
f.eyes.size = 0.4f;
NSLog(@"%@ - %@ - %@ ", f.text, f.eyes.color, f.eyes.size);

Но я получаю только: "пытаясь - (ноль) - (ноль)",Как я могу сделать это работает?

Ответы [ 3 ]

0 голосов
/ 13 декабря 2018

Вам необходимо сохранить содержимое или Архивирование:

https://developer.apple.com/documentation/objectivec/nsobject?language=objc

  @inerface Face : NSObject
  @property (nonatomic, retain) long idO;
  @property (nonatomic, retain) NSString *text;
  @property (nonatomic, retain) Eyes *eyes;
  @end

  @interface Eyes : NSObject
  @property(nonatomic, retain) NSString *color;
  @property(nonatomic, retain) NSNumber *size;
  @end

и добавить метод инициализации в NSObject

  - (id)init

  {

  if (self = [super init]) {

    self.eyes = [[Eyes alloc]init];

    return self;


   } else {

    return nil;
    }
  } 

Happy Coding;)

0 голосов
/ 13 декабря 2018
Face *f  = [[Face alloc] init]; // Face is Initialization 
f.text = @"trying";
f.eyes.color = @"Blue"; // Eyes is not 
f.eyes.size = 0.4f; 

NSLog(@"%@ - %@ - %@ ", f.text, f.eyes.color, f.eyes.size);

(ноль) - (ноль) для обеих переменных экземпляра равно нулю, поскольку объект не является инициатором.


попробуйте

Face *f  = [Face new];
    f.text = @"trying";
    Eyes *eyes = [Eyes new];
    eyes.color = @"Blue";
    eyes.size = @0.4f;
    f.eyes = eyes;
//    f.eyes.color = @"Blue";
//    f.eyes.size = @0.4f;
    NSLog(@"%@ - %@ ", f.text, f.eyes.color)
0 голосов
/ 13 декабря 2018

Вам необходимо сохранить содержимое свойств.

@interface Face : NSObject
@property (nonatomic, strong) long idO;
@property (nonatomic, strong) NSString *text;
@property (nonatomic, strong) Eyes *eyes;
@end

@interface Eyes : NSObject
@property(nonatomic, strong) NSString *color;
@property(nonatomic, strong) NSNumber *size;
@end


@implementation Face
@synthesize idO;
@synthesize text;
@synthesize eyes;
@end

@implementation Eyes 
@synthesize color;
@synthesize size;
@end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...