Objective c 目标c:使用NSManagedObject与CoreData一起保存数据
是否可以从NSManagedObject扩展派生类?我问这个是因为我试着去做。我的实体如下所示: 因此,这意味着应该生成一个类似于以下代码的类: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; @
#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