我需要访问在另一个类中设置的NSManagedObject,所以我尝试制作一个如下所示的单例:
MyManager.h
#import <CoreData/CoreData.h>
#import <foundation/Foundation.h>
@interface MyManager : NSObject {
NSManagedObject *someProperty;
}
@property (nonatomic, retain) NSManagedObject *someProperty;
+ (id)sharedManager;
@end
MyManager.m
#import "MyManager.h"
@implementation MyManager
@synthesize someProperty;
#pragma mark Singleton Methods
+ (id)sharedManager {
static MyManager *sharedMyManager = nil;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
sharedMyManager = [[self alloc] init];
});
return sharedMyManager;
}
- (id)init {
if (self = [super init]) {
someProperty = nil;
}
return self;
}
- (void)dealloc {
// Should never be called, but just here for clarity really.
}
@end
我在这样的一个班级中设置:
MyManager *sharedManager = [MyManager sharedManager];
sharedManager.someProperty = self.form;
但是当我记录它时,它是空的
NSLog(@"shared::%@", sharedManager.someProperty);
我是单身人士的新手,所以可以使用一些建议。
答案 0 :(得分:0)
在核心数据中,您不能只设置属性,您可以插入特定实体的新对象或获取它,并使用获取的对象来设置属性。我希望当你做&#34;设置&#34;时,你已经通过插入或获取创建了nsmanagedobject。如果没有,那可能就是它为空的原因。
NSManagedObject *someEntity = [NSEntityDescription insertNewObjectForEntityForName:@"someEntity" inManagedObjectContext:context];
//after this
someEntity.stringProperty = @"Blablabla";
答案 1 :(得分:0)
你应该从U类需要它再次获取它,但是如果U在其他类或线程中更改它,请记得保存上下文...