Iphone 如何在xcode托管对象模型中创建自动递增属性

Iphone 如何在xcode托管对象模型中创建自动递增属性,iphone,xcode,Iphone,Xcode,嘿,我想做的是创建一个int,它将是实体的ID,并且每当添加一个新实体时,它会像SQL标识属性一样自动递增。这可能吗?我尝试使用indexed checked on属性,但并没有描述indexed的功能 编辑: 我正在向地图添加注释,当您单击图钉时,将显示带有V形的annotationview。现在,当你点击这个按钮,我想加载一个相关的图片。但是,我知道如何将图片链接到此按钮的唯一方法是为图片提供一个唯一的id,然后将button.tag设置为此id,然后根据button.tag加载。这种概念与

嘿,我想做的是创建一个int,它将是实体的ID,并且每当添加一个新实体时,它会像SQL标识属性一样自动递增。这可能吗?我尝试使用indexed checked on属性,但并没有描述indexed的功能

编辑:


我正在向地图添加注释,当您单击图钉时,将显示带有V形的annotationview。现在,当你点击这个按钮,我想加载一个相关的图片。但是,我知道如何将图片链接到此按钮的唯一方法是为图片提供一个唯一的id,然后将button.tag设置为此id,然后根据button.tag加载。

这种概念与核心数据的原则相反-其思想是管理具有属性的实体集,不是数据库中的行或其他需要唯一的东西。如果您正在使用SQLite存储,核心数据将在幕后为您创建一个ID,但您无法访问它

您可能应该重新考虑或至少提供更多关于您试图解决的问题的详细信息,因为就目前情况而言,核心数据不允许您自动递增变量

如果您绝对必须这样做,您可以通过在实体上添加一些NSNumber ID字段来手动增加插入量,然后每次插入新实体时,使用带有各种选项的NSFetchRequest将现有实体按该ID排序并限制为一个结果,获取该实体的ID,添加一个,并将其设置为新实体的ID。不过,这需要大量工作,而且可能容易出错

编辑:根据额外的信息,我想说的是,与其自己尝试自动增加一个ID,不如找到批注的其他保证唯一的属性,直接使用该属性,或者编写一个哈希函数,使用它来生成您的唯一ID。例如,使用纬度和经度构建唯一表示系统中该点的单个整数。除此之外,你没有办法自己增加ID


我同意这是一个棘手的问题-我以前从未在核心数据中遇到过类似的问题,我可以看到自动递增可能有用的地方:

这是最简单的方法,但需要一些努力

在实体中创建索引属性。把它做成一根绳子 创建新GUID时,请使用CFUUIDCreate和CFUUIDCreateString生成GUID 将GUID分配给索引属性 瞧,您现在有了一个近乎完美的唯一ID,可以用于本地缓存和根据需要使用

CFUUIDRef uuidRef = CFUUIDCreate(kCFAllocatorDefault);
CFStringRef uuidStringRef = CFUUIDCreateString(kCFAllocatorDefault, uuidRef);
NSString* guidString = [NSString stringWithString:(__bridge NSString*)uuidStringRef];

我已经用附加信息编辑了我的原始问题。嗯,这不起作用,因为有些引脚正在堆叠,但是我现在可能允许每个位置超过1个引脚。