定义实体属性值

Posted

技术标签:

【中文标题】定义实体属性值【英文标题】:Define Entity's Attribute's Value 【发布时间】:2017-06-20 05:15:29 【问题描述】:

我正在尝试编辑rawURL,以便它在我的应用程序包中的正确文件夹中查找。我查看了Apple's documentation,但是当我打开我的应用程序的.xcdatamodeld 时,我要编辑其字符串值的属性似乎没有设置为任何内容:

我查看了整个代码库,但找不到以编程方式设置的任何地方。但是,我在要更改的代码中放置了一条打印语句,它实际上打印了一个字符串。我想改变这个字符串的值,使它看起来在FindSpecies/[species name]/[img file] 而不是FindSpecies/species/[species name]/images/[img file]

NSArray*    paths = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES);
        NSString*   cachePath = [paths objectAtIndex:0];
        NSString*   resourcePath = [[NSBundle mainBundle] resourcePath];
        NSLog(@"self.rawurl: %@", self.rawURL);
        NSString* stringURL = [self.rawURL stringByAddingPercentEscapesUsingEncoding:NSASCIIStringEncoding];
        NSLog(@"stringURL: %@", stringURL);
        NSURL* url = [NSURL URLWithString:stringURL];
        NSString* path = [url path];
        NSString* query = [url query];
    //...
        returnString = [NSString stringWithFormat:@"%@/%@%@", resourcePath, kThumbnailDirectoryName, path]; 

如果我一开始都不知道rawURL 的设置位置/方式,我可以编辑它吗?

编辑:这个应用程序是由我教授的前研究生于 2011 年构建的。我正在对其进行现代化改造。

【问题讨论】:

你为什么要这样做?为什么不直接使用NSBundle pathForResource:ofType: 资源的完整路径也可以改变。 @JonRose,我应该为我的教授提一下,我正在修复一个由他的前研究生在 2011 年构建的应用程序。 【参考方案1】:

没有理由期望rawURL 在您在屏幕截图中显示的模型编辑器中具有值。这定义了 Core Data 持久存储的模式,而不是数据。它可能有默认值,但不是必需的。

如果rawURL 有一个值,那么它被设置在某处。你有源代码,所以你应该能够找到它。如果您不能,请再看一遍,因为您可以看到它正在某处发生。如果您的实体具有NSManagedObject 的子类,则在该类中的rawURL 属性声明处放置一个断点可能会有所帮助。断点应在值更改时触发。

当然,您也可以随时在具有该属性的任何对象实例上更改它。只需分配一个值,就像任何其他字符串属性一样。

【讨论】:

以上是关于定义实体属性值的主要内容,如果未能解决你的问题,请参考以下文章

springboot自定义配置文件数量是变化的,属性相同,只是值不一样,怎样绑定到实体类?

使用dtd--属性声明

NSPredicate 根据父实体的属性搜索子实体实例

可扩展数据库模式 - 如何存储可扩展属性值

如何定义实体身份

valida校验关联参数、指定属性值