Expected method to read dictionary element not found on object of type NSMutableArrayの警告が出ます。

投稿者: Anonymous

画面遷移の際の

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

Expected method to read dictionary element not found on object of type NSMutableArray

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

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

解決

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

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

NSIndexPath *selectedIndexPath = self.collectionView.indexPathsForSelectedItems.firstObject;
if (selectedIndexPath) {
    classViewController.records = [[LessonManager sharedManager].lessons[selectedIndexPath.item] records];
}
回答者: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *