0

我需要访问在另一个类中设置的 NSManagedObject,所以我尝试制作一个如下所示的单例:

我的经理.h

#import <CoreData/CoreData.h>
#import <foundation/Foundation.h>

@interface MyManager : NSObject {
    NSManagedObject *someProperty;
}

@property (nonatomic, retain) NSManagedObject *someProperty;

+ (id)sharedManager;

@end

我的经理.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);

我是单身人士的新手,所以可以使用一些建议。

4

2 回答 2

0

您应该从 U 需要它的类中再次获取它,但如果 U 在其他类或线程中更改它,请记住保存上下文......

于 2013-11-14T15:17:35.617 回答
0

在核心数据中,您不能只设置属性,您可以插入特定实体的新对象或获取它并使用获取的对象来设置属性。我希望当你在做“设置”时,你已经通过插入或获取创建了 nsmanagedobject。如果不是,那可能就是它为空的原因。

 NSManagedObject *someEntity = [NSEntityDescription insertNewObjectForEntityForName:@"someEntity" inManagedObjectContext:context];
 //after this
 someEntity.stringProperty = @"Blablabla";
于 2013-11-14T15:14:17.523 回答