我對Xcode分析器的評論感到困惑。我已經對Stack進行了搜索,但沒有真正發現類似的情況。我有一個CoreData/SQLite應用程序,用戶在表中選擇一條記錄,獲取實體的所有屬性。那麼,根據條件,就會做事。NSEntityDescription正常工作,但分析器說價值從未讀過
「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];
它怎麼能不被讀取,當它實際上是操作和變量被正確修改的應用程序?我應該如何改進我的代碼? Thansk爲你提供幫助。
你確定'entityOrder = ...'行是必不可少的嗎?正如編譯器指出的那樣,當你獲取一個描述時,這行根本就沒有任何作用,但是在下一行已經覆蓋了存儲在'entityOrder'中的值。你可以嘗試完全跳過這一行,並去'NSEntityDescription * entityOrder = [selectedObjects objectAtIndex:0];'它應該產生相同的結果。如果沒有,'entityForName'調用會有一些不應該是的前所未有的副作用。 –
感謝您的建議。它現在有效。 –