0

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];

それが実際に操作され、変数がアプリによって正しく変更されたときに、どうしてそれを読み取れないのでしょうか?コードをどのように改善すればよいですか?あなたの助けに感謝します。

4

1 に答える 1

1

ラインの直後

NSEntityDescription *entityOrder = [NSEntityDescription entityForName:@"Order" inManagedObjectContext:managedObjectContext];

selectedObjects次に、 withの最初のオブジェクトの内容に再割り当てします

entityOrder = [selectedObjects objectAtIndex:0];

[selectedObjects objectAtIndex:0]Xcode アナライザーは、最初の代入が不要であるか、コード内の間違った変数に結果を代入していることを知らせています。

于 2011-11-29T17:44:05.950 に答える