Objective c 目标c:使用NSManagedObject与CoreData一起保存数据

Objective c 目标c:使用NSManagedObject与CoreData一起保存数据,objective-c,core-data,nsmanagedobject,Objective C,Core Data,Nsmanagedobject,是否可以从NSManagedObject扩展派生类?我问这个是因为我试着去做。我的实体如下所示: 因此,这意味着应该生成一个类似于以下代码的类: #import <Foundation/Foundation.h> @interface Player : NSManagedObject @property (nonatomic, copy) NSNumber* orderNumber; @property (nonatomic, copy) NSString *name; @

是否可以从NSManagedObject扩展派生类?我问这个是因为我试着去做。我的实体如下所示:

因此,这意味着应该生成一个类似于以下代码的类:

#import <Foundation/Foundation.h>

@interface Player : NSManagedObject

@property (nonatomic, copy) NSNumber* orderNumber;

@property (nonatomic, copy) NSString *name;

@end
这两个变量保存到SQLite数据库中

现在,因为我需要一些额外的变量,我只是将它们添加到类中。它仍然有效

#import "Player.h"

@implementation Player

@dynamic name, orderNumber;

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

    if (self != nil)
    {
        [self reset];
    }
    return self;
}

@synthesize isStillInGame = _isStillInGame;

- (void) reset
{
    _isStillInGame = TRUE;
}

- (void) setOutOfGame
{
    _isStillInGame = FALSE;
}

@end
但是现在,当我更改
isStillInGame
bool时,Player类的所有实例都会更改。这是正常的还是我的代码中有错误

第二个我无法回答的问题是,为什么调试时无法访问对象变量。当我试图观察一个播放器实例变量时,我只看到以下内容:


是否可以查看更多内容?

您可以键入
po[players objectAtIndex:someIndex]
然后我得到:
(实体:Player;id:0x8e56670;数据:)
这意味着什么?您使用的是什么版本?通常在右上角有一个小的眼睛图标,它会显示值。这是对象的描述,这都是错误的核心数据工程师不希望描述在数据中出现错误,如果你需要知道一个特定的值,你可以做类似
p(int)[players objectAtIndex:someIndex].someIntProperty
好的,看起来bool变量只是在执行过程中发生了变化。在objective-c中是否仍然可以写入数据类型的内存?
#import "Player.h"

@implementation Player

@dynamic name, orderNumber;

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

    if (self != nil)
    {
        [self reset];
    }
    return self;
}

@synthesize isStillInGame = _isStillInGame;

- (void) reset
{
    _isStillInGame = TRUE;
}

- (void) setOutOfGame
{
    _isStillInGame = FALSE;
}

@end