1
@implementation FirstScene
...
- (void)nextScene {
    Meetings *meetings = (Meetings *) [NSEntityDescription insertNewObjectForEntityForName:@"Meetings" inManagedObjectContext:self.managedObjectContext];
    NSManagedObjectID* objectID = [meetings objectID];
    [secondScene setObjectID:objectID];
}
...
@end

@implementation SecondScene
....
- (void)viewDidLoad
{
    [super viewDidLoad];
    self.managedObjectContext = [(STAppDelegate *)[[UIApplication sharedApplication]  delegate] managedObjectContext];
}

+ (void)setObjectID:(NSManagedObjectID*)objectID {
    NSManagedObjectContext *context = [self managedObjectContext]; // ERROR
    Meetings *theSameMeetings = (Meetings *)[context objectWithID:objectID];
}
...
@end

「次のコードでは、セレクター 'managedObjectContext' の既知のクラス メソッドがありません:

NSManagedObjectContext *context = [self managedObjectContext];

ここでの目的は、FirstScene の *meetings (managedObjectContext) の objectID を SecondScene に渡して、エンティティの *meetings 属性に引き続き追加できるようにすることです。ありがとう。

4

3 に答える 3

2

これは Core Data エラーではなく、基本的な Objective-C エラーです。あなたはこの方法にいます:

+ (void)setObjectID:(NSManagedObjectID*)objectID;

「+」は、これがインスタンス メソッドではなく、クラス メソッドであることを示します。したがってself、この場合はSecondSceneクラスであり、そのクラスの特定のインスタンスではありません。これをしようとすると:

NSManagedObjectContext *context = [self managedObjectContext];

+managedObjectContext... という名前のメソッド、つまりその名前のクラス メソッドを呼び出そうとしています。それは明らかに存在しませんが、これはそれほど驚くべきことではありません。

setObjectID:インスタンスメソッドにするつもりだったのではないかと思います。つまり、行頭に a-ではなくa が必要+です。

于 2013-02-13T19:02:02.150 に答える
0

ブラザー、それはあなたがあなたの'SecondScene'に'managedObjectContext'メソッドを持っていないと言っているように。それは...ですか?

どうやらあなたはコアデータの初心者であり、それに足を踏み入れたばかりです。

ただし、プロジェクトのAppDelegateに移動し、「-(void)managedObjectContext」を検索すると、そこにmanageobjectcontextメソッドがあることがわかります。[selfmanageobjectcontext]をAppDelegateのメソッドに置き換えてください。

これにより、appdelegateにアクセスできるようになります

YourAppDelegateClass   *appDelegate = (YourAppDelegate *)[[UIApplication sharedApplication] delegate]; and now call [appDelegate managedObjectContext];        

お役に立てれば。

于 2013-02-13T18:27:26.737 に答える
0

コンパイラを呼び出すことにより、現在のターゲットで明らかに存在しない[self managedObjectContext]メソッド名を探しています。-(void)managedObjectContextオブジェクト ID を渡す最良の方法は、プロパティを設定し、そのプロパティを合成することです。これにより、オブジェクト ID を会議のインスタンスに割り当て、そのインスタンスから取得できます。

- 編集 -

ManagedObjectID にアクセスする必要があるどのクラスでも、デリゲートを次のように宣言します。

AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];

次に、setObjectID メソッドで次を呼び出すことができます。

 NSManagedObjectContext *context = [appDelegate managedObjectContext];
于 2013-02-13T18:21:59.547 に答える