1

这是我收到的错误

2013-07-30 22:20:53.227 Matchismo[562:c07] Unknown class PlayingCardCollection in    Interface Builder file.
2013-07-30 22:20:53.229 Matchismo[562:c07] -[UIView setSuit:]: unrecognized selector sent   to instance 0x71433f0
2013-07-30 22:20:53.230 Matchismo[562:c07] *** Terminating app due to uncaught exception    'NSInvalidArgumentException', reason: '-[UIView setSuit:]: unrecognized selector sent to instance 0x71433f0'

我没有一个名为“PlayingCardCollection”的类,所以我看不到我怎么会收到这个错误,除非我命名错误,但我找不到这样的错误。

这是我的一些代码

- (Deck *) createDeck
{
return [[PlayingCardDeck alloc] init];
}
- (NSUInteger) startingCardCount
{
return 20;
 }
- (void)updateCell:(UICollectionViewCell *) cell usingCard:(Card *) card
{
if ([cell isKindOfClass:[PlayingCardCollectionViewCell class]]) {
    PlayingCardView* playingCardView = ((PlayingCardCollectionViewCell *)cell).playingCardView;
    if ([card isKindOfClass:[PlayingCard class]]) {
        PlayingCard *playingCard = (PlayingCard *)card;
        playingCardView.rank = playingCard.rank;
        playingCardView.suit = playingCard.suit;
        playingCardView.faceUp = playingCard.faceUp;
        playingCardView.alpha = playingCard.isUnplayable ? 0.3 : 1.0;
    }
}
}

这是另一个文件的一部分。

- (NSInteger) numberOfSectionsInCollectionView:(UICollectionView *)collectionView
{
return 1;
}

- (NSInteger) collectionView:(UICollectionView *)collectionView
  numberOfItemsInSection:(NSInteger)section
{
return self.startingCardCount;
}
- (UICollectionViewCell *) collectionView:(UICollectionView *)collectionView
               cellForItemAtIndexPath:(NSIndexPath *)indexPath
{
UICollectionViewCell* cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"PlayingCard" forIndexPath:indexPath];
Card* card = [self.game cardAtIndex:indexPath.item];
[self updateCell:cell usingCard:card];
return cell;
}

如果需要更多代码,请告诉我。我有很多文件用于这个项目,但自从我的项目最后一次成功运行以来,大多数文件都没有被触及。提前致谢!

4

2 回答 2

1

这就是您的应用终止的原因:

*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[UIView setSuit:]: unrecognized selector sent to instance 0x71433f0'

更仔细地查看原因,请注意它说:

'-[UIView setSuit:]: unrecognized selector sent to instance 0x71433f0'

该消息告诉您,您的应用程序试图setSuit:UIView. 该类UIView没有声明setSuit:方法或suit属性,因此通常这不起作用。

该问题可能与第一个问题有关,也可能不相关,看起来好像您将 nib 文件中的对象(可能是视图)的标识设置为稍后删除或重命名的类。查看 nib 文件中对象的身份(使用 Identity Inspector 选项卡),看看是否可以找到PlayingCardCollection.

如果是这样,请将其更改为更合适的内容。很有可能,这是运行时异常的间接原因。

于 2013-07-31T18:08:21.630 回答
0

错误说明了一切。在界面生成器中将类名设置为某个视图,PlayingCardCollection并且该类不存在

要找出一个最佳选择是选择笔尖并右键单击它,将其作为源代码打开,其中显示您笔尖的 xml 结构表示然后搜索PlayingCardCollection并找到它。找到具有该内容的笔尖,您可以找到从那个笔尖看,更多关于笔尖本身的研究可以很容易地整理出视图

于 2013-07-31T08:48:42.670 回答