Я хочу сохранить блок внутри основных данных NSManagedObject, если это возможно. У меня есть унаследованный класс от NSManagedObject.
Этот класс имеет блок для удовлетворения некоторых асинхронных вызовов. Я пытался сохранить блок как атрибут Transformable и Transient. при попытке вызвать блок перед загрузкой NSManagedObject у меня плохой доступ к памяти "EXC_BAD_ACCESS"
.
Если я не проверяю трансформируемый флаг, у меня есть исключение, подобное этому:
-[__NSStackBlock__ encodeWithCoder:]: unrecognized selector sent to instance 0xbfffd930
Я новичок в iOS. Я работаю под iOS 5 SDK с включенной ARC. Это выдержка из моего кода:
#import <Foundation/Foundation.h>
#import <CoreData/CoreData.h>
@class ModbusRegister, Board;
typedef void (^DataBlockType)(NSArray *listRegister);
@interface EnergyEntry : NSManagedObject
- (void)invokeWithData: (NSArray *)listRegister;
@property (nonatomic, copy) DataBlockType datablock;
@end
#import "EnergyEntry.h"
@implementation EnergyEntry
@dynamic datablock;
- (void)invokeWithData: (NSArray *)listRegister{
self.datablock(listRegister);
}
@end
Когда я пытался сохранить блок:
[energyEntry setValue:@"Energía activa" forKey:@"name"];
[energyEntry setValue:[NSNumber numberWithDouble:0] forKey:@"value"];
[energyEntry setValue:currentBoard forKey:@"board"];
[energyEntry setValue:^(NSArray *listRegister){
//...my block operations to store
} forKey:@"datablock"];
Наконец, когда я вызываю блок и выдается ошибка:
NSArray *listRegister=... //my ready array
[energyEntry invokeWithData:listRegister];