我对 Xcode 分析器的评论感到困惑。我在 Stack 上搜索过,但没有真正找到类似的情况。我有一个 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];
实际操作并且变量被app正确修改的时候怎么会读不到呢?我应该如何改进我的代码?感谢您的帮助。
最佳答案
紧接该行之后
NSEntityDescription *entityOrder = [NSEntityDescription entityForName:@"Order" inManagedObjectContext:managedObjectContext];
然后将其重新分配给 selectedObjects
的第一个对象的内容
entityOrder = [selectedObjects objectAtIndex:0];
Xcode 分析器让您知道第一个分配是多余的,或者您正在将 [selectedObjects objectAtIndex:0]
的结果分配给代码中的错误变量。
关于objective-c - NSEntityDescription 工作正常,但分析器说值从未被读取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8315034/