gpt4 book ai didi

ios - iOS的核心数据-如何为对象创建唯一的ID?

转载 作者:行者123 更新时间:2023-12-01 18:47:54 25 4
gpt4 key购买 nike

我在IOS中有一个iPhone和iPad等项目。对于项目,我正在使用CoreData来保存用户在应用程序中提供的数据。为了便于理解,可以说它像一个联系人应用程序。因此,基本上您知道您拥有自己的姓名,工作,电话等。那么这个应用程序还为每个“联系人”存储了一张图片。当然可以选择。为了防止数据库效率低下,我使用下面的路径代码将图像存储到DocumentsDirectory中。通过使用ManagedObjects ID调用图像,该ID也是图像名称中使用的ID。但是,多个对象可以具有相同的ID,这会引起一些问题。

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,     NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *savedImagePath = [documentsDirectory stringByAppendingPathComponent:[NSString stringWithFormat:@"Person%i.jpg",[[_detailItem id] intValue]]];

基本上,我使用人的ID拍摄图像。但是,多个人可以具有相同的id(一个int-32)。而不是这样做,我想知道CoreData是否可以为存储的每个对象创建或创建唯一ID的方法。这样,如果我更改ID,它将不会丢失其图片,或者如果另一个对象具有相同的ID,则不会使用相同的图片。

我以前使用的某些数据库(例如MySQL)有一个属性选项,该属性将为其赋予唯一的ID,以供用户/论坛/帖子/等使用。...XCode的CoreData中是否有类似的东西?我讨厌必须解析每个对象以获得尚未使用的数字。

最佳答案

一些数据库,例如我以前使用的MySQL ...

使用Core Data时不要再考虑MySQL。这样做只会引起问题。

受管对象具有一个唯一的ID字段,您可以使用objectID查找类型为NSManagedObjectID的ID字段。这是一个不透明的类,但是您可以使用其NSURL方法将其转换为URIRepresentation。从那里,您可以将其转换为字符串,并将其用作图像文件名。

只要您仅使用一个设备,这些ID就是唯一的。如果您曾经在设备之间同步数据,则一台设备上的ID将与另一台设备上的ID不匹配。该ID供Core Data内部使用,并且仅在同一持久性存储文件中保持一致。

如果您确实想要一个整数,则必须自己维护它。将最新整数的值存储在用户默认值或持久存储文件的元数据中。创建新实例时,您将读取整数,将其递增,将其用于新实例,然后保存新值。

一种更简单的方法是使用UUID作为唯一ID。通过执行以下操作获取新的唯一ID:

NSString *newID = [[NSUUID UUID] UUIDString];

将其存储为属性,并将其用作图像文件名的一部分。

关于ios - iOS的核心数据-如何为对象创建唯一的ID?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33504947/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com