0

私はコアデータを実験していますが、今までかなり成功しています。コアデータ値をクラスの変数に割り当てようとしていますが、うまくいきません! 私のエンティティは Player で、属性は Team と Name です。属性の値を Athlete クラスの変数に割り当ててから、これらの変数をコントローラーのラベルに割り当てたいと考えています。現在、コア データにあるプレイヤーは 1 人だけです。エンティティの NSManagedObject サブクラスを作成しようとしました(ここで回答を読んでみましたが、うまくいきませんでした)。

これは私が試したものです。

Athlete * myAthlete = [Athlete alloc];
Player * corePlayer = [Player alloc];
myAthlete.name = corePlayer.name;

NSLog(@"Player name %@",myAthlete.name);

そして、これはエラーです:

Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[Player name]: unrecognized selector sent to instance 0x832d960'

私は間違った方法でアプローチしていると確信しているので、前もってお詫び申し上げます-それは学習の一部だと思います.

ありがとう。

** * ** * ** * EDIT1:** * ** * ** * ** * ** ここに私の NSManagedObject クラスがあります

//  Player.h



#import <Foundation/Foundation.h>
#import <CoreData/CoreData.h>


@interface Player : NSManagedObject

@property (nonatomic, retain) NSString * team;
@property (nonatomic, retain) NSString * name;


@end

そして.m

#import "Player.h"


@implementation Player

@dynamic team;
@dynamic name;


@end
4

1 に答える 1

0

コア データ オブジェクトのインスタンスを作成するときは、それを管理オブジェクト コンテキストに格納する必要があるため、alloc/init は機能しません。

次のように新しいプレーヤー インスタンスを作成できます。

Player *newPlayer = [NSEntityDescription insertNewObjectForEntityForName:@"Player" inManagedObjectContext:myManagedObjectContext];

あなたが得ている例外は、Player エンティティに name プロパティがないためです。これは初期化に関連している可能性がありますが、別の問題である可能性があります。これらのクラスの詳細も投稿する必要があります。

編集:

OK、既存のオブジェクトを取得するには、新しいオブジェクトを作成するのではなく、管理対象オブジェクトのコンテキストから見つける必要があります。そのため、1 つの Player を含むマネージド オブジェクト コンテキストが与えられた場合、このコードは 1 つの Player オブジェクトを含む配列を取得します。

NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:@"Player"];
NSArray *playerArray = [managedObjectContext executeFetchRequest:request error:&error];

次に、プロパティにアクセスするには、プレーヤー オブジェクトを取得します。

Player *player = playerArray[0];
NSLog(@"team: %@", player.team);
NSLog(@"name: %@", player.name);
于 2013-05-31T12:11:16.460 に答える