Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/24.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
Objective c NSEntityDescription工作正常,但Analyzer表示从未读取该值_Objective C_Cocoa_Core Data_Nsentitydescription - Fatal编程技术网

Objective c NSEntityDescription工作正常,但Analyzer表示从未读取该值

Objective c NSEntityDescription工作正常,但Analyzer表示从未读取该值,objective-c,cocoa,core-data,nsentitydescription,Objective C,Cocoa,Core Data,Nsentitydescription,我对Xcode分析器的一句话感到困惑。我已经搜索过了,但没有找到类似的情况。我有一个CoreData/SQLite应用程序,用户在表中选择一条记录,获取实体的所有属性。然后,根据条件,我们会做一些事情 “ordersController”是数据的NSArrayController。 “订单”是涉及的实体。 “objectAtIndex:0”是表中选定的记录 代码如下: NSArray* selectedObjects = [ordersController selectedObjects]; N

我对Xcode分析器的一句话感到困惑。我已经搜索过了,但没有找到类似的情况。我有一个CoreData/SQLite应用程序,用户在表中选择一条记录,获取实体的所有属性。然后,根据条件,我们会做一些事情

“ordersController”是数据的NSArrayController。 “订单”是涉及的实体。 “objectAtIndex:0”是表中选定的记录

代码如下:

NSArray* selectedObjects = [ordersController selectedObjects];
NSEntityDescription *entityOrder = [NSEntityDescription entityForName:@"Order" inManagedObjectContext:managedObjectContext];
entityOrder = [selectedObjects objectAtIndex:0];
if ([entityOrder valueForKey: bla_bla_bla... { do_something }
该应用程序编译良好,无崩溃,无警告,并按预期正确处理数据。然而,当我启动Xcode的分析工具时,它指向这一行,说“在初始化过程中存储到‘entityOrder’的值永远不会被读取。”


当它被实际操作并且变量被应用程序正确修改时,它怎么可能不被读取?我应该如何改进我的代码?谢谢你的帮助。

电话刚接通

NSEntityDescription *entityOrder = [NSEntityDescription entityForName:@"Order" inManagedObjectContext:managedObjectContext];
然后,将其重新分配给带有

entityOrder = [selectedObjects objectAtIndex:0];

Xcode分析器让您知道第一次赋值是多余的,或者您正在将
[selectedObjects objectAtIndex:0]
的结果赋值给代码中的错误变量。

您是否绝对确定
entityOrder=…
行是必需的?正如编译器所说,这一行在获取描述时基本上什么都不做,但在下一行中已经覆盖了存储在
entityOrder
中的值。您可以尝试跳过这一行,选择
NSEntityDescription*entityOrder=[selectedObjects objectAtIndex:0]并且它应该产生相同的结果。否则,
entityForName
调用将产生一些意想不到的副作用,这是不应该的。谢谢您的建议。现在可以了。谢谢你的解释。我对如何将N实体描述与CoreData实体一起使用的理解是错误的。
entityOrder = [selectedObjects objectAtIndex:0];