Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/358.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Core data 在目标c中正确使用单例_Core Data_Singleton_Global Variables - Fatal编程技术网

Core data 在目标c中正确使用单例

Core data 在目标c中正确使用单例,core-data,singleton,global-variables,Core Data,Singleton,Global Variables,我对这一点很迷茫,已经在互联网上读到了一些东西,但我的问题是我需要了解如何正确使用singleton。我的问题是,在我的应用程序中的某个时刻,我会执行以下操作: myVariable = [NSEntityDescription insertNewObjectForEntityForName:@"Entity" inManagedObjectContext:context]; 我需要保留myVariable并在其他视图中使用它,我在某个地方读到,如果我想在所有视图中使用变

我对这一点很迷茫,已经在互联网上读到了一些东西,但我的问题是我需要了解如何正确使用singleton。我的问题是,在我的应用程序中的某个时刻,我会执行以下操作:

myVariable = [NSEntityDescription insertNewObjectForEntityForName:@"Entity" 
          inManagedObjectContext:context];
我需要保留
myVariable
并在其他视图中使用它,我在某个地方读到,如果我想在所有视图中使用变量,这是最好的方法。我遵循了这个例子,但我真的不知道如何使用它,有人能给我解释一下吗

@interface DataLoader : NSObject {
   NSString *someProperty; 
   //(i think i need myVariable here, and not type NSString)
}

@property (nonatomic, retain) NSString *someProperty;

+ (id)sharedManager;
@end


@implementation DataLoader

+(id)sharedInstance  {
   static dispatch_once_t p=0;
   __strong static id _sharedObject = nil;
   dispatch_once(&p, ^{
    _sharedObject = [[self alloc]init];
   });

return _sharedObject;
}

@end
如何设置myVariable,然后在其他视图中使用它


关于

通常的方法是,每当控制器被推到导航堆栈上时,让控制器将变量传递到下一个,例如,在prepareforsgue:中的
。只需为视图控制器提供一个强大的
@属性
,即可跟踪它

SomeViewController *nextVC = segue.destinationController;
nextVC.myVariable = self.myVariable;

这就是在苹果的托管对象上下文示例代码的许多实例中是如何实现的,这当然是一种很好的模式。

我认为您不太清楚自己在做什么,使用单例无法解决这一问题。您好,蒙迪,谢谢您的回答。我见过这个解决方案,但是如果您使用的是master-detail应用程序,那么如何使用它呢?我这样问是因为每次使用主按钮时,您总是直接指向主视图类。所有的段都连接到它,如果你有很多视图,你不能强制从视图A传递到B来传递值…你可以在A上,然后转到D…我想要保留的值会发生什么变化?。对不起,我是新来的,我从来没有必要用这个。你能给我一个提示吗?谢谢这就是它的工作原理。在
prepareForSegue
中,您可以通过标识符区分分段,并相应地传递变量。您好,Mundi,很抱歉回答得太晚,我将在主视图类中使用prepareForSegue方法。谢谢你的帮助。RegardSweel将出现堆栈溢出。别忘了接受答案。