Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/100.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 创建核心数据实体期间的精神错乱_Ios_Macos_Cocoa_Core Data - Fatal编程技术网

Ios 创建核心数据实体期间的精神错乱

Ios 创建核心数据实体期间的精神错乱,ios,macos,cocoa,core-data,Ios,Macos,Cocoa,Core Data,我以编程方式填充核心数据实体 我有这样一个数组: NSArray *formats = @[ @"6 x 5", @"5.3 x 4.3", @"4 x 3", @"5 x 3.5", ... 现在,我枚举它并填充实体 for (int i=0; i<[formats count]; i++)

我以编程方式填充核心数据实体

我有这样一个数组:

NSArray *formats = @[
                        @"6 x 5",
                        @"5.3 x 4.3",
                        @"4 x 3",
                        @"5 x 3.5",
...
现在,我枚举它并填充实体

  for (int i=0; i<[formats count]; i++) {

    NSString *format = formats[i];
    Format *oneFormat = [Format formatWithString:format inManagedObjectContext:managedObjectContext];

    // ... bla bla

  }
这就是问题所在。在
for
循环中的某个点上

format = @"5.3 x 4.3"
然后,执行这一行

    Format *oneFormat = [Format formatWithString:format inManagedObjectContext:managedObjectContext];
理论上,
format=@“5.3 x 4.3”
被传递到
format formatWithString

问题是
Format formatWithString
接收以下字符串:
@“4 x 3.5”

什么???方法称为
@“5.3 x 4.3”
,并接收
@“4 x 3.5”

这是令人惊奇的部分。如果我
po谓词
我看到

name == "5.3 x 4.3 cm"
这是正确的值。但保存记录时,保存的值是错误的

这个
@“4 x 3.5”
是很久以前我在代码中使用的旧格式。那是个打字错误。我从代码中删除了所有提及此格式的内容。我已经检查了10次了。不再有
@“4 x 3.5”

我已删除所有派生数据。每次我生成数据库时,它都包含不应该存在的
@“4 x 3.5”
条目

是否有任何隐藏的核心数据缓存或我可以清理的地方来正确生成这些缓存?如何使用一个值调用一个方法并接收另一个值

  • 我怀疑您在重置所有内容时没有删除SQLite文件。如果您在iOS上,那么它将在模拟器或设备上。从设备/sim卡中删除应用程序也可以。如果您使用的是OSX,则跟踪SQLite文件的存储位置并将其删除

  • 像这样进行更新/插入查询的成本非常高。我建议您对需要做出决定的所有对象进行一次提取。否则你的表现会很糟糕


  • #2给我一个想法,在Format类中更改变量名,这就解决了问题。谢谢
    name == "5.3 x 4.3 cm"