“我的界面构建器错误中的未知类<myclass>”但我没有MyClass </myclass>

时间:2013-07-31 02:52:12

标签: objective-c xcode cocoa-touch

这是我收到的错误

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

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

2 个答案:

答案 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并找到它。找到带有该内容的笔尖,你可以从该笔尖找到视图。更多关于笔尖本身的研究可以轻松地理清视图