资讯专栏INFORMATION COLUMN

如何将iOS工程中的.plist文件里的内容取出在android的工程中使用

Paul_King / 1921人阅读

摘要:前言虽然做研发谁都想周边的配合都很到位,只要做好自己的事情就好,但是现实往往不会如此的一番如意的轻松,昨日我在修复一个的地区选择功能时候,发现这个地区的选项不是服务端提供,客户端是从一个文件中加载出来的,那么问题来了,我所能找到的文件只有工

前言:

虽然做研发谁都想周边的配合都很到位,只要做好自己的事情就好,但是现实往往不会如此的一番如意的轻松, such as 昨日我在修复一个android APP的地区选择功能时候,发现这个地区的选项不是服务端提供,iOS客户端是从一个文件中加载出来的,那么问题来了,我所能找到的文件只有iOS工程中的ProvincesAndCities.plist,这个文件是iOS存数据的文件,android要想读是非常困难的,废话不多说,路在脚下,还是要前行,让我们想办法解决它!

正文: iOS方面操作

我先简短的介绍一下解决的思路,.plist文件里面放的可能是数组也可能是字典,我们如果直接用NSLog方法打印数组,字典的时候,我们会得到的

就是这样的编码格式的内容,这显然是不能用在android的,所以我们的思路是要将.plist中的内容打印为我们能处理的内容,那就是JsonString了。


所以iOS这边的做法,如图片所示,先将plist文件放入,然后读取出内部的数组信息,然后用SBJson转化为NSString,然后在NSLog打印出来,运行程序我们会得到


很好我们已经进行一半了,然后在控制台复制这些数据到一个文本文件中如


至此iOS这边的处理完成了,然后是txt文件跟android之间的处理手法,让我们继续看下去

android方面操作

首先现在android工程中的res文件夹中新建raw文件夹,然后将我们得到的areainfo.txt,放入到这个raw文件夹中,细心的你可能注意到了,areainfoi我改成小写了,大家留意一下,这里不要大写,不允许。跟着操作你应该会是这样的结构


然后我们要做的事情是把txt中的内容读取出来

InputStream inputStream = getResources().openRawResource(R.raw.areainfo); 
        String areaInfo = UtilTools.getStringFromInputStream(inputStream);
        
        JSONArray myJsonArray;
        try
        {
        myJsonArray = new JSONArray(areaInfo);
       
        for(int i=0 ; i < myJsonArray.length() ;i++)
        {
            //获取每一个JsonObject对象
            JSONObject provinceObject = myJsonArray.getJSONObject(i);
        
            //获取省区域的值
            String ProvinceName = provinceObject.getString("State");
            
            countries.add(ProvinceName);
//            Log.i("areaInfo", "省区域名称内容为:"+ProvinceName);
            //获取市区数组中对象的对象
            JSONArray cityArray = provinceObject.getJSONArray("Cities");
            
            List tempCitiesForAdd = new ArrayList();
            
            for(int j=0 ; j < cityArray.length() ;j++){
                //获取每一个JsonObject对象
                JSONObject cityObject = cityArray.getJSONObject(j);            
                //获取省区域的值
                String cityName = cityObject.getString("city");
                
                tempCitiesForAdd.add(cityName);
//                Log.i("areaInfo", "城市名称内容为:"+cityName);
            }
            
            cities.add(tempCitiesForAdd);

        }
    }catch (JSONException e)
    {
    }

我们可以这样
InputStream inputStream = getResources().openRawResource(R.raw.areainfo);从txt中将内容以输入流的方式读出来,然后我们再处理输入流,这里我也把UtilTools中的方法贴出来

/** 
* @author chenqiang
* @version 2015年11月6日 下午1:49:31
*/
public class UtilTools {
    
    //将输入流转化为字符串
    public static String getStringFromInputStream(InputStream inputStream) {
        InputStreamReader inputStreamReader = null;
        try {
            inputStreamReader = new InputStreamReader(inputStream, "utf-8");
        } catch (UnsupportedEncodingException e1) {
            e1.printStackTrace();
        }
        BufferedReader reader = new BufferedReader(inputStreamReader);
        StringBuffer sb = new StringBuffer("");
        String line;
        try {
            while ((line = reader.readLine()) != null) {
                sb.append(line);
                sb.append("
");
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
        return sb.toString();
    }

这样一来我们就从txt文件中得到了String信息,然后转化为JSONArray就可以for循环开始操作了,最终iOS的效果图为


android的效果图为

总结:

至此,大功告成!做别人不愿意做的事情,做别人做不到的事情,做别人想不到的事情,做好这三做,我相信会will be a better man Come on! 欢迎大家一起交流技术。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/12450.html

相关文章

  • 如何iOS工程.plist文件内容取出android工程使用

    摘要:前言虽然做研发谁都想周边的配合都很到位,只要做好自己的事情就好,但是现实往往不会如此的一番如意的轻松,昨日我在修复一个的地区选择功能时候,发现这个地区的选项不是服务端提供,客户端是从一个文件中加载出来的,那么问题来了,我所能找到的文件只有工 前言: 虽然做研发谁都想周边的配合都很到位,只要做好自己的事情就好,但是现实往往不会如此的一番如意的轻松, such as 昨日我在修复一个and...

    Shonim 评论0 收藏0
  • fir.im Weekly - 关于 Log Guru 开源、Xcode 探索和 Android7.

    摘要:本文介绍了一个工具,能够把第三方应用转成动态库,并加载到自己的中,文章最后会以支付宝为例,展示如何调用其中的函数和方法。本文介绍了腾讯预审团队一系列的预审策略和方法,让大家了解腾讯是怎样保障提审通过率的。 本期 fir.im Weekly 整理了最近的一些技术分享,包括关于 Log Guru 开源、Xcode 探索、 Android7.0 适配等等 iOS/Android 相关的工具、...

    diabloneo 评论0 收藏0
  • 如何使用iOS9Core Spotlight框架

    摘要:如何使用中的框架作者,时间翻译,如有错误欢迎指出。是在最新的版本中,苹果不仅依旧保留了这个传统,再次为我们提供了新的框架和接口。第一次用户可以查询到除苹果自家应用以外其它第三方应用数据并与之交互,这让人影响深刻且意义重大。 如何使用iOS9中的Core Spotlight框架 作者: Gabriel Theodoropoulos,时间:2015/12/22 翻译:BigNerdCodi...

    developerworks 评论0 收藏0
  • 如何使用ShareSDK实现Cocos2d-xAndroid/iOS分享与授权

    摘要:添加必须的依赖库各社交平台所需依赖库新浪微博美拍添加依赖库的方法如下配置和白名单等,各个社交平台需要的配置可以参考快速集成文档中的和白名单配置项。 Cocos2DX 简介Cocos2d-x是一套成熟的开源跨平台游戏开发框架。其引擎提供了图形渲染、GUI、音频、网络、物理、用户输入等丰富的功能,被广泛应用于游戏开发及交互式应用的构建。引擎的核心采用C++ 编写,支持使用C++、Lua或者...

    ningwang 评论0 收藏0
  • 如何使用ShareSDK实现Cocos2d-xAndroid/iOS分享与授权

    摘要:添加必须的依赖库各社交平台所需依赖库新浪微博美拍添加依赖库的方法如下配置和白名单等,各个社交平台需要的配置可以参考快速集成文档中的和白名单配置项。 Cocos2DX 简介 Cocos2d-x是一套成熟的开源跨平台游戏开发框架。其引擎提供了图形渲染、GUI、音频、网络、物理、用户输入等丰富的功能,被广泛应用于游戏开发及交互式应用的构建。引擎的核心采用C++ 编写,支持使用C++、Lua或...

    cikenerd 评论0 收藏0

发表评论

0条评论

Paul_King

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<