0

我正在尝试将问题/答案部分集成到我的一个应用程序中。

我想使用实用程序样式的应用程序,其中问题在第一个视图中作为 Uilable 加载,答案在翻转视图中加载。

我希望从 plist 加载问题和答案数据,并集成一个 shuffle 选项,以便可以混合问题。

plist 方法适合这里吗?有人有制作这种应用程序的经验吗?网络/书籍中是否有任何示例可以让我看到一些源代码?

非常感谢您的帮助。

j


更新:

好的 - 我已经尝试过完成这项工作。

这是我的 plist (DataDetail1.plist):

Root...............................(Array)
........Item 0.....................(Dictionary)
.................Question..........(string)  ///Question text////
.................Answer............(string) ///Answer text/////
........Item 2.....................(Dictionary)
.................Question..........(strings) //Question text////
.................Answer............(strings) //Answer text/////

我在想我可以将 plist 声明为 NSarray:

- (void)viewDidLoad {
[super viewDidLoad];
NSString *path = [[NSBundle mainBundle] pathForResource:@"DataDetail1" ofType:@"plist"]; //Defines path for DATA For ARRAY//
NSArray* tmpArray = [[NSArray alloc] 
                            initWithContentsOfFile:path]; //initialises the contents of the ARRAY with the PLIST"
self.DataList1 = tmpArray; 
[tmpArray release];

然后在第一个视图中为 UILable 分配一个 Key;

- (void)viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
Label1.text = [DataList1 objectForKey:Question_KEY];

正是在这一点上,我遇到了麻烦——我不能将 'objectForKey' 方法与 NSArray 一起使用。

我怎样才能让它工作?

j

ps

一旦这工作正常,我需要什么代码才能使翻转视图从 Plist 中的给定项目加载“答案”键?

4

1 回答 1

0

您可以使用 plist 存储几乎所有内容,但它们的问题是它们无法扩展。您必须一次加载整个 plist 并实例化 plist 序列化的所有对象。这对于一些小对象来说是可以的,但是随着对象的数量、大小和复杂性的增长,它很快就会占用你的内存并且变得难以管理。

如果每个文件只代表几十张卡片,每张卡片只有一个文本问题和一个文本答案,那么 plist 可能会正常工作。当您获得大量卡片和/或开始添加图形时,它就会崩溃。

编辑:

这:

Label1.text = [DataList1 objectForKey:Question_KEY];

... 不管用。objectForKey:是 NSDictionary 不是 NSArray 的方法。您必须在数组的特定索引处获取字典并发送objectForKey:消息。您需要类似:

Label1.text = [[DataList1 objectAtIndex:1] objectForKey:Question_KEY];
于 2010-07-14T17:19:57.560 回答