5
我想在核心数据NSManagedObject中保留一个块(如果可能的话)。我有一个NSManagedObject的继承类。 该类有一个块来满足一些异步调用。我尝试将该块存储为Transformable和Transient属性。当我尝试调用块之前加载我的NSManagedObject我有一个不良的内存访问"EXC_BAD_ACCESS"
。是否可以在NSManagedObject中存储块?
如果我不检查的变形标志我有类似这样的例外:
-[__NSStackBlock__ encodeWithCoder:]: unrecognized selector sent to instance 0xbfffd930
我在的iOS是新。我在启用ARC的iOS 5 SDK下工作。这是我的代码摘录:
#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];