17818


画面遷移の際の

[code]

    classViewController.records = [[LessonManager sharedManager].lessons[self.collectionView.indexPathsForSelectedItems]records];
    
[/code]

で

[code]

    Expected method to read dictionary element not found on object of type NSMutableArray
    
[/code]

と警告が発生します 印はLessonManagerのところについています。

どのように直せばいいのでしょうか。


CC BY-SA 3.0
2015-10-17T07:02:18.477
17747
2015-10-19T10:59:37.237
2015-10-17T11:54:06.453
5519
8802
question
objective-c iphone
Expected method to read dictionary element not found on object of type NSMutableArrayの警告が出ます。


`UICollectionView`の`- (NSArray
*)indexPathsForSelectedItems;`は`NSArray`を返します（複数セルの選択に対応している）。`NSArray`なのでそのままでは`lessons`プロパティの添え字として利用できません。

コレクションビューで複数選択を禁止しているなら中身は空か１つだけ入ってるかのどちらかなので、`firstObject`メソッドなどで配列から取り出して、空でなければ添え字として利用する、といった処理になると思います。

[code]

    NSIndexPath *selectedIndexPath = self.collectionView.indexPathsForSelectedItems.firstObject;
    if (selectedIndexPath) {
        classViewController.records = [[LessonManager sharedManager].lessons[selectedIndexPath.item] records];
    }
    
[/code]


CC BY-SA 3.0
2015-10-19T10:59:37.237
17818
2015-10-19T10:59:37.237
5519
17747
answer