Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/122.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 将包含节的大型文本文件保存到核心数据属性_Ios_Objective C_Cocoa Touch_Core Data - Fatal编程技术网

Ios 将包含节的大型文本文件保存到核心数据属性

Ios 将包含节的大型文本文件保存到核心数据属性,ios,objective-c,cocoa-touch,core-data,Ios,Objective C,Cocoa Touch,Core Data,我想把这个.txt文件保存到核心数据 但正如你所见,它有5个不同的部分 1) 身份证(城市身份证) 2) nm(名称) 3) 纬度 4) 经度 5) 国家代码 我想下载该文件并将每个部分保存到核心数据属性中。 我环顾四周,找不到任何关于如何做到这一点的信息。我是核心数据和数据库的初学者,如果这是一个非常新手的问题,那么很抱歉 谢谢,如果我能提供任何其他信息,请告诉我。您在这里要做的第一件事就是下载数据。您可以使用NSURLConnection来实现这一点。然后你想一行一行地读,了解不同的城市。

我想把这个.txt文件保存到核心数据

但正如你所见,它有5个不同的部分 1) 身份证(城市身份证) 2) nm(名称) 3) 纬度 4) 经度 5) 国家代码

我想下载该文件并将每个部分保存到核心数据属性中。 我环顾四周,找不到任何关于如何做到这一点的信息。我是核心数据和数据库的初学者,如果这是一个非常新手的问题,那么很抱歉


谢谢,如果我能提供任何其他信息,请告诉我。您在这里要做的第一件事就是下载数据。您可以使用
NSURLConnection
来实现这一点。然后你想一行一行地读,了解不同的城市。当您逐行阅读时,可以通过制表符(
\t
)将每个字段分隔开来,从而获得每个字段。当您拥有每个单独的字段时,请记住将它们放入数据库中

示例代码:

- (void)downloadAndParseCityList {
    NSURL *listURL = [NSURL URLWithString:@"http://openweathermap.org/help/city_list.txt"];
    NSURLRequest *request = [NSURLRequest requestWithURL:listURL]; //Forge the request to be used by NSURLConnection.
    NSData *cityData = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil]; //You probably use an asynchrounous request instead, but I'm too lazy to do that here.

    NSString *cityString = [[NSString alloc] initWithData:cityData encoding:NSASCIIStringEncoding]; //We're going to work with the data as an NSString.

    NSArray *cities = [cityString componentsSeparatedByString:@"\n"]; //By getting the components seperated by line-break, it is easier to work with each individual city more like an object.

    for(NSUInteger i = 1; i <= [cities count]-1; i++) { //We start at i=1 because we don't want to parse the first line in the file ("id    nm  lat lon countryCode"), as these are just the field names.
        NSString *cityString = cities[i];
        NSArray *cityFields = [cityString componentsSeparatedByString:@"\t"]; //All the fields are seperated by a tab ('\t'), that makes it easy to read all the fields.

        for(NSString *field in cityFields) {
        //Here you probably want to do something with the fields. Save them to a Core Data database or something.
        }
    }
}
-(void)下载和解析城市列表{
NSURL*listURL=[NSURL URLWithString:@”http://openweathermap.org/help/city_list.txt"];
NSURLRequest*request=[nsurlRequestRequestWithURL:listURL];//伪造要由NSURLConnection使用的请求。
NSData*cityData=[NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];//您可能会使用异步请求,但我太懒了,无法在这里执行此操作。
NSString*cityString=[[NSString alloc]initWithData:cityData encoding:NSASCIIStringEncoding];//我们将以NSString的形式处理数据。
NSArray*cities=[cityString components sSeparatedByString:@“\n”];//通过换行分隔组件,可以更轻松地像对象一样处理每个单独的城市。

对于(NSUInteger i=1;i您的第一个答案是错误的,但不是您认为的原因。一个NSString可以容纳超过300000字节。问题是编码实际上是
NSASCIIStringEncoding
。感谢您的答案哦,我想我太习惯UTF8Encoding了。希望您从答案中得到一些东西。绝对是一个帮助。)我的回答值得一查。另外,你应该使用
NSUInteger
,它是一个64位int,用于处理像这样的大量数据。只是一个提示