Iphone 从plist中提取数据

Iphone 从plist中提取数据,iphone,objective-c,xcode,plist,Iphone,Objective C,Xcode,Plist,我试图从plist文件中提取一些数据,并将其显示在文本字段中(通过单击UIButton)。下面的代码提取plist的地址,而不是数据。非常感谢您的帮助。谢谢 -(IBAction) buttonPress { NSString *path = [[NSBundle mainBundle] pathForResource:@"messages" ofType:@"plist"]; NSMutableArray *array = [[NSMutableArray alloc] in

我试图从plist文件中提取一些数据,并将其显示在文本字段中(通过单击UIButton)。下面的代码提取plist的地址,而不是数据。非常感谢您的帮助。谢谢

-(IBAction) buttonPress {

    NSString *path = [[NSBundle mainBundle] pathForResource:@"messages" ofType:@"plist"];
    NSMutableArray *array = [[NSMutableArray alloc] initWithContentsOfFile:path];

    [myMessage setText:path];
}

它完全按照你说的去做

假设messages.plist包含字符串数组,则可以轻松获取数组中的最后一项:

[myMessage setText:[array lastObject]];

是的,你打印的是路径,而不是数组中的任何项目。改变

[myMessage setText:path];

您还可以将plist更改为包含dict而不是数组,以便调用特定文本-

-(IBAction) buttonPress {

    NSString *path = [[NSBundle mainBundle] pathForResource:@"messages" ofType:@"plist"];
    NSDictionary *dict = [[NSDictionary alloc] initWithContentsOfFile:path];

    [myMessage setText:[dict objectForKey:@"text"]];
}
回答您关于arc4random的问题

创建枚举,以便可以创建switch语句-

typedef enum {
    MESSAGE1,
    MESSAGE2,
    MESSAGE3
} messageIDs;
然后创建一个随机整数,并将其修改为x,这样您就可以得到一个数字btw 0和x-1。(在本例中,由于枚举中有3个对象,x=3)

然后在switch语句中使用该随机整数

switch (randomValue) {
    case MESSAGE1:
          [myMessage setText:[dict objectForKey:@"message1"]]; //or [myMessage setText:[array objectAtIndex:MESSAGE1]]
    break;
    case MESSAGE2:
          [myMessage setText:[dict objectForKey:@"message2"]];
    break;
    case MESSAGE3:
          [myMessage setText:[dict objectForKey:@"message3"]];
    break;
    default:
    break;
}

希望这能奏效。我以前从未尝试过…

我还收到一条警告消息:“未使用的变量数组”您是否对收到有关数组未使用的警告感到惊讶?如果你看一下代码,你真的在任何地方使用过它吗?这非常有效。非常感谢!还有一个问题-如果我想从plist中提取一个随机对象,我可以使用arc4random()函数吗?如果是这样的话,这将如何适应[myMessage setText:[dict objectForKey:@“text]”;再次感谢。再次检查我的答案,我已经更新了它以帮助您使用arc4random()。别忘了将这个问题标记为已回答(如果可行的话!)
int randomValue = arc4random() % 3;
switch (randomValue) {
    case MESSAGE1:
          [myMessage setText:[dict objectForKey:@"message1"]]; //or [myMessage setText:[array objectAtIndex:MESSAGE1]]
    break;
    case MESSAGE2:
          [myMessage setText:[dict objectForKey:@"message2"]];
    break;
    case MESSAGE3:
          [myMessage setText:[dict objectForKey:@"message3"]];
    break;
    default:
    break;
}