Ios 定制卡片组应用程序的数据和类设计
我正在为一个定制塔罗牌制作一个应用程序,它应该能够洗牌,选择一张牌,并给出牌的描述 我的主要问题是:Ios 定制卡片组应用程序的数据和类设计,ios,Ios,我正在为一个定制塔罗牌制作一个应用程序,它应该能够洗牌,选择一张牌,并给出牌的描述 我的主要问题是: 在卡类中用作数据持有者的内容。总共有36张卡片。每个都有不同的png/文本作为正面图像/描述,但每个都有相同的背面图像(就像一个游戏组一样)。我假设这是某种数组,但我不知道如何声明两个图像和文本(前/后/描述)并将其链接到单个索引位置,或者如果我需要3个单独的数组,那么我如何将它们链接到彼此,以便它们都获得正确的数据 甲板类:我假设将是一个空数组,在洗牌后从卡类中获得对象?我有一个很好的洗牌方法
NSLog
,但基本上需要在任何卡类上实现它?然后,甲板将显示在“FlowCover”中(http://chaosinmotion.com/flowcover.html). 这是工作,我已经整理出“didselect”方法来更改视图,但是-两个恒定阵列,测试和正面图像。 然后,您的数据组是简单的整数数组(1-36)。 所以洗牌,最上面的牌是18张
Text is Descriptions[18] (or 17 if zero based arrays)
FrontImage is Images[18] ditto
BackImage is always the same so no point in having 36 of them.
如果您的视图只是两个imnages和一个card的文本,那么它不需要了解card类或deck类的任何信息,只需要这三个参数
//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以拥有一个洗牌例程。请参见欢迎来到SO!这不是一个论坛;与你的编程问题无关的个人细节只会分散你对手头任务的注意力,这就是回答你的问题。此外,这似乎相当广泛,最好分成两个或三个较小的问题,每个问题解决一个问题。只是想弄清楚您在示例中做了什么。是否将每个数据部分声明为card类中的方法-()?甲板阵列是否仍在不同的类别中?你会在“甲板”数组上运行随机方法吗?如果您添加了一个选定的属性,那么如何将数据链接到第二个视图?Hi Rosh,我在这里通过只指定类的接口实现了一些快捷方式。今天晚些时候我会完整地写出来。每个数据部分都是一个成员变量,可以通过一个名为属性访问器的方法访问。deck数组是一个不同的类,它是一个扩展的NSMutableArray,因此您不必编写该类,只需使用shuffle/random方法(参见链接)对其进行扩展,即调用deck对象的random方法。如果将选定的属性添加到card类中,那么当您想要显示所选内容时,您可以简单地遍历该组,这样您就不需要第二个selecteddeck对象。或者你可以有第二个selecteddeck对象,它只包含引用,直到你,Card类真的需要一个back属性吗?因为它总是一样的,我想你可以很容易地删除该属性。我认为这将使类的使用更加连贯,一张卡的所有属性都是从同一个地方访问的。