【问题标题】:Should I persist pickerViews content in NSUserDefaults?我应该在 NSUserDefaults 中保留 pickerViews 内容吗?
【发布时间】:2016-05-13 21:12:27
【问题描述】:

我的系统中有一个国家列表和世界上每个国家的州列表。这些内容存储在我的数据库中,我可以通过 REST 请求访问它。在论文中,国家和州是静态内容(我不打算更改这些寄存器,但最终,也许我会......)。现在,每次我需要一个国家时,我都在做一个 GET 请求,每次我需要一个州时,我也在做一个 GET,使用国家的 ID。我的问题是:有一些很好的模式可以涵盖这类问题吗?我应该将国家和州保留在我的系统中的什么位置?我应该将它存储在 NSUserDefaults 上吗?

【问题讨论】:

    标签: ios swift


    【解决方案1】:

    您可以在您的应用程序包中拥有一个包含国家名称和州名列表的 JSON 文件 :) 由于国家和州不会经常更改,因此在您的应用程序包中包含硬编码数据是安全的 :)

    假设您将国家/地区数据保存在名为 Country.json 的文件中

    你可以通过使用来阅读,

        NSData *data = [NSData dataWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"countries" ofType:@"json"]];
       NSError *localError = nil;
       NSDictionary *parsedObject = [NSJSONSerialization JSONObjectWithData:data options:0 error:&localError];
    
       if (localError != nil) {
             NSLog(@"%@", [localError userInfo]);
       }
       countriesList = (NSArray *)parsedObject;
    

    就是这样 :) 哥们,你有你的国家名单 :)

    如果您不想自己保存国家/地区,请在使用 GET 请求获取国家/地区列表后,将响应保存在应用程序文档文件夹中的文件中:)

    下次从同一个文件中读取数据:)

    NSString* filePath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
    NSString* fileName = @"countries.json";
    NSString* fileAtPath = [filePath stringByAppendingPathComponent:fileName];
    if ([[NSFileManager defaultManager] fileExistsAtPath:fileAtPath]) {
        NSData *data = [NSData dataWithContentsOfFile:fileAtPath];
        NSError *localError = nil;
        NSDictionary *parsedObject = [NSJSONSerialization JSONObjectWithData:data options:0 error:&localError];
    }
    else {
          //make webservice call fetch the country list and write it to file :)
    }
    

    保存整个世界国家列表及其在用户默认值中的资本不是可取的伙伴:) 并且每次从服务器获取它都会延迟向用户显示选择器:)

    所以我的建议是在应用程序包中保存一个文件,并在需要数据伙伴时随时阅读:)

    【讨论】:

      【解决方案2】:

      我不建议将这些信息存储在 NSUserDefaults 上,你没有足够的使用 CoreData 但你可以存档!

      如果你想使用 NSUserDefault 有一个很好的链接: Using NSUserDefaults on arrays

      【讨论】:

        猜你喜欢
        • 2013-03-13
        • 1970-01-01
        • 2013-09-29
        • 1970-01-01
        • 1970-01-01
        • 2011-02-17
        • 2011-01-18
        • 1970-01-01
        • 2012-11-16
        相关资源
        最近更新 更多