2015-10-19 2 views
-1

Я создал класс Player.h как модель.Я создал новый класс, но почему он не сохраняет значения внутри экземпляра объекта?

#import <Foundation/Foundation.h> 

@class Player; 

@interface Player : NSObject 

@property (nonatomic, strong) NSString * name; 
@property (nonatomic, strong) NSNumber * score; 
@property (nonatomic, strong) NSDate * datetime; 

-(id)initWithDictionary:(NSMutableDictionary *)dic; 

@end 

Вот Player.m

#import "Player.h" 

@implementation Player 

-(id)initWithDictionary:(NSMutableDictionary *)dic { 

    self = [super init]; 

    if (self) { 
     self.name = [dic objectForKey:@"name"]; 
     self.score = [dic objectForKey:@"score"]; 
     self.datetime = [dic objectForKey:@"datetime"]; 
    } 
    return self; 

} 


-(id)init { 
    self = [super init]; 

    if (self) { 
     self.name = @""; 
     self.score = @-1; 
     self.datetime = [NSDate date]; 
    } 
    return self; 
} 

@end 

Использование класса:

Добавление некоторых контрольных точек, когда я пытаюсь увидеть переменную содержимое на локальных переменных, он показывает 0 товаров на объекте , где должны быть некоторые значения внутри него.

Player * player = [[Player alloc] init]; 
player.name = @"Billy"; 
player.score = @100; 
player.datetime = [NSDate date]; 

NSLog(@"Name:%@ Score:%@ DateTime:%@", player.name, player.score, player.datetime); 

Breakpoint stop one - see the init is fine

When try to set anything, it says : 0 keys/values pairs

Я не могу понять такое поведение, любые идеи 0 клавиши?

Извините, мой уровень здесь, в stackoverflow, не позволяет мне показывать больше изображений ссылок. ОБНОВЛЕНО: Проблема вокруг. Я только что закрыл Xcode, очистил проект, удалил производные данные и теперь отлично работает ... Причина ... еще одна ошибка xcode ...;) Если у кого-то есть причина этого поведения, пожалуйста, дайте нам знать!

+1

Код должен быть в вопросе, добавьте его в вопрос. – zaph

+0

Что означает «почему он не сохраняет значения внутри экземпляра объекта?» имею в виду? Необходимо предоставить дополнительную информацию, чтобы сделать вопрос ясным. – zaph

+0

Обратите внимание на скриншоты, особенно там, где находятся точки останова. См. Пар 0Keys/values? –

ответ

1

Показаны ваш объект игрока с описанием «0 пары ключ-значение» является неправильным. Xcode кажется смущенным и думает, что ваш объект является словарем. Предложения в другом потоке говорят либо перезапустить Xcode, очистить и перестроить ваш проект, либо и то, и другое. Я бы попробовал эти вещи.

Как уже говорилось, у вас есть точка останова на линии, где вы назначаете значение свойства вашего игрока name. Отладчик останавливает вашу программу до выполнения инструкции. не после, так что name еще не установлен. Попробуйте добавить точку останова дальше, а затем введите команды в консоль отладчика, например, evaluate self.name (e self.name). Те из нас, кто научился отладчику Xcode, когда он был GDB, привыкли использовать print (p) или po (что коротко для объекта печати. ​​Аббревиатура po соответствует evaluate в GDB, но длинная форма ` print-object больше недействителен.)

2

Точка останова, которую вы установили, останавливает код до линии, на которой вы переходите, а не после.

Если вы перешагнуть кода (стрелки под прямым углом), вы должны увидеть результат player.name = playerName

+0

Я сделал, но не смог загрузить изображение сюда из-за ограничений моей учетной записи в Stackoverflow ... –

Смежные вопросы