这是我收到的错误
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;
}
如果需要更多代码,请告诉我。我有很多这个项目的文件,但大多数都没有被触及,因为我的项目最后一次成功运行。提前谢谢!
答案 0 :(得分: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
。
如果是这样,将其改为更合适的东西。可能是,这是运行时异常的间接原因。
答案 1 :(得分:0)
错误说明了一切。在接口构建器中将类名设置为PlayingCardCollection
并且该类不存在
找出一个最佳选择是选择笔尖并右键单击它,将其打开为源代码,其中显示笔尖的xml结构表示
然后搜索PlayingCardCollection
并找到它。找到带有该内容的笔尖,你可以从该笔尖找到视图。更多关于笔尖本身的研究可以轻松地理清视图