Objective c 每个实例的唯一标识符

Objective c 每个实例的唯一标识符,objective-c,cocoa-touch,cocoa,Objective C,Cocoa Touch,Cocoa,我目前正在尝试轻松保存UIViewController的状态。但是,很明显,同一类的多个控制器需要将其数据保存在同一目录中 因此,我正在寻找一种为实例获取唯一标识符的方法,以便将数据安全地写入磁盘 提前谢谢。我不是100%确定我读对了你的问题,但我确实读了两遍 这是你需要的吗 MyClass.h 我的班级 答案是没有简单的方法可以做到这一点。因为那不是你应该做的。对象实例不是数据模型。对象之间的链接不会在管路之间保存。但是,可以创建数据的标识符,对象可以跟踪这些标识符以及数据之间的相应链接 e、

我目前正在尝试轻松保存UIViewController的状态。但是,很明显,同一类的多个控制器需要将其数据保存在同一目录中

因此,我正在寻找一种为实例获取唯一标识符的方法,以便将数据安全地写入磁盘


提前谢谢。

我不是100%确定我读对了你的问题,但我确实读了两遍

这是你需要的吗

MyClass.h 我的班级
答案是没有简单的方法可以做到这一点。因为那不是你应该做的。对象实例不是数据模型。对象之间的链接不会在管路之间保存。但是,可以创建数据的标识符,对象可以跟踪这些标识符以及数据之间的相应链接

e、 您可以在数据模型中创建对象之间的链接,方法是在创建实例时分配UUID,然后在退出时将其保存到磁盘。。。启动时从磁盘加载它

我会调查NSCoding和核心数据。。。它们都是为了让你在退出应用程序时保留数据而设计的


也许更新/问一个新问题,澄清你想用它实现什么。

你的问题根本没有意义。两个实例“重新启动应用程序后相同”意味着什么?我同意@KevinBallard的观点,你可以更好地表达这个问题。然而,我已经发布了一个基于我对当时的解读的答案。@KevinBallard更新了我的问题。希望它现在更好。这是有效的,除非它不会是相同的下一次发射。Static int在会话之间不会持久存在。这是真的。这是一个简单的方法,但重启应用程序后就不一样了。看来我确实看错了你的问题。假设您以相同的顺序创建实例,这将是一项工作,但如果您不能保证这一点,我的答案将不起作用。关于核心数据的问题是,我仍然需要一个标识符来找到正确的nsmanagedobject。@Larcus94
nsmanagedobject
objectID
属性不会起作用吗?如果您试图保存和恢复对象之间的关系,CoreData会很好地做到这一点?我仍然需要将objectID存储在某个位置,以便再次找到NSManagedObject。
@interface MyClass : NSObject
{
    int myID;
}
@end
//this is where the magic is. Keeps a static identifier which starts at zero each time you start the app and increments each time you init this class.
static int identifier = 0;

@implementation MyClass

-(id) init
    ...

    identifier ++;
    myID = identifier;
    ...
}
....
@end