- 将三个“事物”链接到单个索引位置的典型方法是将事物放入单个类,然后将该类的对象放在索引位置。
- 卡片组可以是一个简单的 NSMutableArray,它是 Objective-c 的可编辑对象容器
- 选择可以是第二个 NSMutableArray,或者您可以将选定的属性添加到每张卡片。两者都是可行的选择,但您的算法会有所不同。
所以有一个包含静态背景图像的 CardClass(即背景图像存在于您从中实例化的每个对象中)。将属性添加到正面图像和描述的类。然后将您的列表创建为这些对象的集合。
//Card.h
@interface Card : NSObject
{
UIImage * back;
UIImage * front;
NSString * description;
}
@property (readonly) UIImage * back;
@property (readonly) UIImage * front;
@property (readonly) NSString * description;
- (id) initWithFront:(UIImage *)setFront Description:(NSString*)setDescription;
@end
//Card.m
#import "Card.h"
static UIImage * backimage = nil;
@implementation Card
@synthesize back;
@synthesize front;
@synthesize description;
+(void) initialize
{
if (!backimage){
backimage = [[UIImage alloc]initWithContentsOfFile:@"imagefile.png"]; //though imagefile.png will be replaced with a reference to a plist.info string
}
}
- (id) initWithFront:(UIImage *)setFront Description:(NSString*)setDescription{
if (self = [super init]){
front=setFront;
description= setDescription;
back = backimage;
}
return self;
}
@end
//... elsewhere, perhaps your main viewDidLoad method
NSMutableArray *deck = [NSMutableArray initWithCapacity:36];
Card * card1 = [[CardClass alloc] initWithFront:@"card1.png" Description:@"card 1"];
[deck addObject:card1];
... //etc to create the remaining cards in the whole deck
扩展您的 NSMutableClass 以获得一个随机播放程序。请参阅随机播放 NSMutableArray 的最佳方法是什么?