3

ここ 1 日、CoreData の検索と作成を適切に処理するのに役立つコードを動作させようとしてきました (この記事からhttp://emplementation.blogspot.nl/2011/12を見つけました)。 /importing-data-into-core-data-while.html )。私は今までやったことのないコードブロックを扱うことになりました。

どういうわけか、関数で定義しようとしているものと typedef で何かが異なるために発生する次のエラーを修正できません。typedef で __strong として定義されているブロックと関係があることを理解していると思いますが、実装ファイルでは異なります。

エラー

タイプ「void (^) ( NSManagedObject * _strong , NSDictionary * _strong 、NSManagedObject * _strong)'

MyViewController.h

typedef void (^objectOperationBlock)(NSManagedObjectContext *context,
                                 NSDictionary *hostObjectData,
                                 NSManagedObject *localManagedObject);

MyViewController.m

objectOperationBlock matchedBlock = ^(NSManagedObject *context, NSDictionary *hostObjectData, NSManagedObject *localManagedObject){
    NSLog(@"Dosomething");
};

私のすべての試みで、これがビルドできることがわかりました(ただし、typedefは使用していません)

void (^matchedBlock)(NSManagedObject*, NSDictionary*, NSManagedObject*) = ^(NSManagedObject *context, NSDictionary *hostObjectData, NSManagedObject *localManagedObject){
    NSLog(@"Dosomething");
};

ご協力いただきありがとうございます。

4

1 に答える 1

2

typedef を読む必要があることを見逃しましたか:

typedef void (^objectOperationBlock)(NSManagedObject *managedObject,
                                     NSDictionary *hostObjectData,
                                     NSManagedObject *localManagedObject);
于 2012-06-07T13:28:05.127 に答える