【问题标题】: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 年构建的应用程序。

标签: ios core-data xcdatamodel


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-10-01
    • 2017-04-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-27
    相关资源
    最近更新 更多