Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios Objective-C下载PLIST并在表中使用_Ios_Objective C_Uitableview - Fatal编程技术网

Ios Objective-C下载PLIST并在表中使用

Ios Objective-C下载PLIST并在表中使用,ios,objective-c,uitableview,Ios,Objective C,Uitableview,我对Objective-C编程相当陌生。我正在尝试构建一个个人应用程序,用于查看包含在web服务器上的事件信息。我希望每个事件标题字符串在UITableView中显示为单独的一行 我正在使用MySQL创建plist。我的plist是这样的: 我正在下载plist,如下所示: NSString *stringURL = @"http://www.example.com/events.plist"; NSURL *url = [NSURL URLWithString:string

我对Objective-C编程相当陌生。我正在尝试构建一个个人应用程序,用于查看包含在web服务器上的事件信息。我希望每个事件标题字符串在UITableView中显示为单独的一行

我正在使用MySQL创建plist。我的plist是这样的:

我正在下载plist,如下所示:

NSString *stringURL = @"http://www.example.com/events.plist";
        NSURL  *url = [NSURL URLWithString:stringURL];
        NSData *urlData = [NSData dataWithContentsOfURL:url];
        if ( urlData )
        {
            NSArray       *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
            NSString  *documentsDirectory = [paths objectAtIndex:0];

            NSString  *filePath = [NSString stringWithFormat:@"%@/%@", documentsDirectory,@"events.plist"];
            [urlData writeToFile:filePath atomically:YES];
        }
这就是我试图将信息加载到它们的数组中的方式:

    events = [[NSDictionary alloc] initWithContentsOfFile:filePath];

    ID = [events objectForKey:@"Event ID"];
    title = [events objectForKey:@"Event Title"];
    date = [events objectForKey:@"Event Date"];
    price = [events objectForKey:@"Price"];
    totalTickets = [events objectForKey:@"Total Tickets"];
    ticketsSold = [events objectForKey:@"Tickets Sold"];
    ticketsRemaining = [events objectForKey:@"Tickets Remaining"];
    postStatus = [events objectForKey:@"Post Status"];
    postContent = [events objectForKey:@"Post Content"];
现在我有麻烦了。现在,当我调试“事件”字典中的行数时,它返回0

因此,我无法设置“numberOfRowsInSection”。
[title objectAtIndex:indexath.row]
也不起作用

我相信问题在于如何设置NSDictionary,但由于缺乏Objective-C和数组知识,我无法克服这个问题。

这是您的问题:

events = [[NSDictionary alloc] initWithContentsOfFile:filePath];
您的plist是一个字典数组,您正试图将该数组作为字典加载。请尝试以下方法:

events = [NSArray arrayWithContentsOfFile:filePath];
编辑:要将标题提取到数组中,以便在表格单元格中使用,请执行以下操作:

NSMutableArray *titles = [NSMutableArray array];
for (NSDictionary *event in events) {
    NSString *title = [event objectForKey:@"Event Title"];
    [titles addObject:title];
}
这是你的问题:

events = [[NSDictionary alloc] initWithContentsOfFile:filePath];
您的plist是一个字典数组,您正试图将该数组作为字典加载。请尝试以下方法:

events = [NSArray arrayWithContentsOfFile:filePath];
编辑:要将标题提取到数组中,以便在表格单元格中使用,请执行以下操作:

NSMutableArray *titles = [NSMutableArray array];
for (NSDictionary *event in events) {
    NSString *title = [event objectForKey:@"Event Title"];
    [titles addObject:title];
}

请检查是否首先将文件正确存储在文档目录中“标题”是什么?它是数组还是字符串?在我看来是字符串,所以不能调用
[title objectAtIndex:indexath.row]
您好,是的,它存储正确。我可以在appdata中看到它。“标题”是数组。标题不是数组。键
事件标题
的值是一个字符串。因此
[events objectForKey:@“Event Title”]
将返回一个NSString。因此,即使您将变量title键入为NSArray,您也在为其分配NSString。请检查您是否首先将文件正确存储在文档目录中什么是“title”?它是数组还是字符串?在我看来是字符串,所以不能调用
[title objectAtIndex:indexath.row]
您好,是的,它存储正确。我可以在appdata中看到它。“标题”是数组。标题不是数组。键
事件标题
的值是一个字符串。因此
[events objectForKey:@“Event Title”]
将返回一个NSString。因此,即使您将变量title键入为NSArray,您也在为其分配一个NSString(int i=0;iHi Neil,这似乎很有效,谢谢。我现在可以获得正确的事件数。但是,现在有一个问题,我如何将所有的“title”放入一个数组中以用于单元格文本?title=[events objectForKey:@“Event title”]在title是数组或字典时不起作用。我得到:-[\NSCFArray objectForKey:]:发送到的选择器无法识别instance@hart1994我会在上面的答案中加上这些。@neilco现在你的答案已经完成了,这就是我为什么要说出你的答案answer@neilco谢谢。它现在在每一行中显示事件标题,这很好。但是,当向下滚动列表时,它会因以下错误而崩溃:**-[\uu NSArrayM objectAtIndex:]:发送到解除分配实例0x16eabac0的消息我一直在尝试解决此问题。我相信这是由于范围异常,但我不知道如何修复。提前感谢。若要添加此消息,您需要使用for循环遍历数组:
for(int i=0;iHi Neil,这似乎很有效,谢谢。我现在可以获得正确的事件数。但是,现在有一个问题,我如何将所有的“title”放入一个数组中以用于单元格文本?title=[events objectForKey:@“Event title”]在title是数组或字典时不起作用。我得到:-[\NSCFArray objectForKey:]:发送到的选择器无法识别instance@hart1994我会在上面的答案中加上这些。@neilco现在你的答案已经完成了,这就是我为什么要说出你的答案answer@neilco谢谢。它现在在每一行中显示事件标题,这很好。但是,当向下滚动列表时,它会因以下错误而崩溃:**-[\uu NSArrayM objectAtIndex:]:发送到解除分配实例0x16eabac0的消息我一直在尝试解决此问题。我相信这是由于范围异常造成的,但我不知道如何修复。提前感谢。