plist文件读取

NSArray 读取plist文件 Xcode默认创建是键值对的标准xml文件类型,可以通过NSDictionary读取。 "1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0" 阅读详情

1、在cocos2dx中支持的标签有:

dict 、 key 、 integer 、 string 、 real、 true 、 false、array

示例:

plist文件:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>key1</key>
<string>hello world!</string>
<key>key2</key>
<integer>22</integer>
<key>key3</key>
<real>2.22</real>
<key>key4</key>
<false/>
<key>key5</key>
<array>
<integer>33</integer>
<string>hello world!</string>
</array>
</dict>
</plist>

读取:

{

    CCDictionary* plistDic = CCDictionary::createWithContentsOfFile("Images/test.plist");
    std::string value1 = plistDic->valueForKey("key1")->getCString();
    int value2 = plistDic->valueForKey("key2")->intValue();
    float value3 = plistDic->valueForKey("key3")->floatValue();
    bool value4 = plistDic->valueForKey("key4")->boolValue();
    CCArray* arr = (CCArray*)(plistDic->objectForKey("key5"));
    
    for (int i = 0; i < arr->count(); i++)
    {
        CCLog("%s", ((CCString*)(arr->objectAtIndex(i)))->getCString());
    }
 
    //CCArray* brr = dynamic_cast<CCArray*>(plistDic->objectForKey("key5"));

}

* cocos2dx 读取的数据中,所有数据类型都是转为CCString*, 然后添加到整个字典中,这个字典的节点类型是CCObject*。其中,true和false分别转为1和0,然后转CCString*,string、integer、real直接转为CCString*;所以使用字典中的数据时,要先从CCObject*转CCString*,然后从CCString*转其他类型。


2、一个跨平台的开源库,用于解析plist文件,使用了boost库,使用方法在README文件中

https://github.com/animetrics/PlistCpp 

支持的类型在README中有阐述(dict 、 key 、 integer 、 string 、 real、 true 、 false、array、date、data)

示例:

int _tmain(int argc, _TCHAR* argv[])
{
    dictionary_type dict; 
    Plist::readPlist("XMLExample1.plist", dict);

    for(dictionary_type::const_iterator it = dict.begin(); it != dict.end(); ++it)
    {
        cout<< "key: "<< it->first <<endl;
    }

    //读数组
    const array_type& plistArray = boost::any_cast<const array_type&>(dict.find("testArray")->second);
    cout << boost::any_cast<const int64_t&>(plistArray[0]) << endl;
    cout << boost::any_cast<const string&>(plistArray[1]).c_str() << endl;

    //读字典
    const dictionary_type& plistDic = boost::any_cast<const dictionary_type&>(dict.find("testDict")->second);
    dictionary_type::const_iterator it = plistDic.begin();
    cout << "key:" << it->first << endl;
    cout << boost::any_cast<const string&>(it->second) << endl;
    
    //读一个变量
    const Date& date = boost::any_cast<const Date&>(dict.find("testDate")->second);
    std::string strDate = date.timeAsXMLConvention();


    /*
    缺点:读取的数据类型不好动态判断,因为,读出的数据都放到了boost::any中了,类型无法认为识别。
    */

    return 0;
}


===================================

1、上述两个库都可以再自己添加支持其它类型,反正有了源码了。

2、格式:dict 下的格式是key 然后类型,如:

<dict> 

<key>key1<key>

<string>hello world</string>

</dict>

array下的格式是没有key标签的,如:

<array>

<string>hello world!</string>

<integer>250</integer>

</array>

3、cocos2dx中plist格式的配置文件通常格式是这样子:


而且,必须要有 <key>metadata</key> 部分,而且必须要有<key>format</key>,而且format的值必须为1才说明这个配置文件时有效的,否则配置文件不会被加载。

加载配置文件的方式: 

CCConfiguration::sharedConfiguration()->loadConfigFile("configs/config-test-ok.plist");

===================================

===================================

===================================

由于XML文件在储存时不是最有空间效率的,Mac OS X 10.2导入了一种新的格式,它将plist文件存储为二进制文件。从Mac OS X 10.4开始,这是偏好设置文件的默认格式。

读写二进制格式的plist文件:

int _tmain(int argc, _TCHAR* argv[])
{
    //读写XML格式plist文件
    dictionary_type dict; 
    Plist::readPlist("XMLExample1.plist", dict); 


    for(dictionary_type::const_iterator it = dict.begin(); it != dict.end(); ++it)
    {
        cout<< "key: "<< it->first <<endl;
    }


    //读数组
    const array_type& plistArray = boost::any_cast<const array_type&>(dict.find("testArray")->second);
    cout << boost::any_cast<const int64_t&>(plistArray[0]) << endl;
    cout << boost::any_cast<const string&>(plistArray[1]).c_str() << endl;


    //读字典
    const dictionary_type& plistDic = boost::any_cast<const dictionary_type&>(dict.find("testDict")->second);
    dictionary_type::const_iterator it = plistDic.begin();
    cout << "key:" << it->first << endl;
    cout << boost::any_cast<const string&>(it->second) << endl;
    
    //读一个变量
    const Date& date = boost::any_cast<const Date&>(dict.find("testDate")->second);
    std::string strDate = date.timeAsXMLConvention();


    /*
    缺点:读取的数据类型不好动态判断,因为,读出的数据都放到了boost::any中了,类型无法认为识别。
    */


    //读写二进制格式plist文件
    dictionary_type dic;
    dic.insert(std::make_pair("testArray", plistArray));
    Plist::writePlistBinary("fileB", dic);


    dictionary_type dicR;
    Plist::readPlist("fileB", dicR);
    //读数组
    const array_type& plistArrayR = boost::any_cast<const array_type&>(dicR.find("testArray")->second);
    cout << boost::any_cast<const int64_t&>(plistArrayR[0]) << endl;
    cout << boost::any_cast<const string&>(plistArrayR[1]).c_str() << endl;


    return 0;
}

cocos2d-x-3rd-party-libs-bin-metal-support-22.zip cocos2dx 4.0引擎的依赖包。 本来需要通过引擎下download_deps.py来下载,速度较慢,传上来有需要的自己下载吧,优快云速度还行 立即下载

相关推荐

cocos2d-x-cocos2d-x-2.2.2.zip

cocos2d-x-cocos2d-x-2.2.2.zip,下载后需执行download-deps.py 下载lib

Mac plist文件

对于普通用户来说,基本不用管plist文件是什么,因为这个是应用程序开发者使用的。对于资深苹果使用者来说,可能需要修改应用属性或者破解软件时可能会用到。macOS、iOS、iPadOS的应用程序都可能会有plist配置文件,他是苹果系列操作系统特有的配置文件。plist的本质是个xml格式的文本文件,英文全称是property list,文件后缀使用.plist。

诗人不写诗 3216

ios-plist-binaryplist文件解析(C/C++)

苹果的属性表解析类,可解析text/x-apple-plist+xml格式和application/x-apple-binary-plist格式.注意该库具有跨平台特性,编译的时候需要一些依赖库(xml相关)。由于是库,里面只有库测试程序,要在您的程序里运行,需要移植哦。A library to handle Apple Property Lists

plist文件的读写

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_33755649的博客 720

解析plist所需的c++文件cpp

cocos2d-x + vs2008 + win7下面开发 用强大的PhysicsEditor软件制作花瓶等复杂的图形的b2shape的神器 这个是要用到的plist专用的解析工具类,免费下载

文本格式的xml plist与binary plist格式互相转换工具

支持将苹果的plist二进制文件转换为json格式,无需调用plutil。 命令行调用方法: 方法1、不指定输出文件,默认以输入文件改名 plistConverter -i xxx.plist 方法2、指定输出文件 plistConverter -i xxx.plist -o xxx.plist

读取plist文件

这个 从别人那拿来的挺好使 呵呵 在Xcode中建立一个iOS项目后,会自己产生一个.plist文件,点击时会看见它显示的是类似于excel表格: 但是,如果打开方式选择Source Code,你会看见它其实是一个xml文件。 我们会做一个小例子,在这个例子中我们自己建立一个plist文件并填入数据,然后运行时读取这个plist文件,并将数据填写在界面上。 首先要知道读取plist文

jiangbuku的专栏 639

cocos2dx麻将单机游戏

基于最新版 Cocos2d-X 3.17 与 cocostudio V3.10 开发的单机麻将游戏,麻将算法为商业级麻将服务器端算法,整个项目代码精简、注释详细。 可以运行于iOS,Mac,Android,Windows平台。

iOS开发:读取plist文件

iOS开发2:读取plist文件

ios开发 知识点 靳会有 1893

告别QXDM:在Android Studio中调试与验证高通NV读写功能的完整流程

本文详细介绍了在Android Studio中调试与验证高通NV分区读写功能的完整流程,替代传统的QXDM工具。通过JNI接口层、HAL服务层和Diag通信层的架构设计,开发者可以在熟悉的IDE环境中高效完成NV操作,包括环境配置、错误处理和性能优化等关键实践。

weixin_27013291的博客 261

Delft3D从入门到实践:安装、编译与首次模拟指南

本文为Delft3D初学者提供了一份详尽的从零开始指南。内容涵盖软件获取、许可证申请、图形界面安装、核心计算内核的编译环境搭建与编译步骤,以及最终整合运行首个水动力模拟的全流程。重点解决了Windows系统下Delft3D安装与编译的常见问题,帮助用户快速上手这一开源水动力与泥沙输运模拟工具。

weixin_29303701的博客 538

IOS中plist文件内容的读取

PLIST的全称为Property List,是扩展名为.plist的属性文件,其内容为XML格式,并且以键值对的形式来标记内容。 读取plist文件的具体代码如下: 1.创建plist文件,File---->NewFile----->IOS/Resource---->Property List创建名称为dict.plist的文件key为Name,String类型,值为Vincent 2.在

Vincent_Weiqing.Li的博客 3406

(25.08)Ubuntu20.04+ROS1复现FAST-LIO2

请确保在。

m0_69023437的博客 3992

iOS开发2:读取plist文件

在Xcode中建立一个iOS项目后,会自己产生一个.plist文件,点击时会看见它显示的是类似于excel表格: 但是,如果打开方式选择Source Code,你会看见它其实是一个xml文件。 我们会做一个小例子,在这个例子中我们自己建立一个plist文件并填入数据,然后运行时读取这个plist文件,并将数据填写在界面上。 首先要知道读取plist文件的方法,一般来说,使用代码

曲奇 2309

MagicDraw小白必看:BDD图中模块的5种属性详解(含SysML v1.6最新端口配置指南)

本文面向MagicDraw初学者,详细解析SysML BDD图中模块的五种核心结构属性,包括组成部分、引用、值、约束属性及端口。重点阐述了SysML v1.6中端口设计的范式转移,对比了完整端口与代理端口的区别与应用场景,并通过实战案例指导如何利用代理端口进行清晰的接口定义与系统架构设计。

rum55的博客 373

NVIDIA Cosmos:生成式物理世界模型 从入门到精通1

Prompt Upsampler模型通过微调T5-XXL实现低质量描述到专业级描述的自动扩展,将"一个机器人在仓库"转换为"一台橙色的Kiva自主移动机器人在现代化电商仓库的过道中行驶,头顶的LED阵列投射出冷白色光线,地面反射出机器人的轮廓,摄像机以1.5米高度跟随拍摄,轻微晃动模拟手持效果"。控制输入(深度图、语义分割等)经独立的卷积编码器处理后注入控制分支,提取的多尺度特征通过零卷积层(zero convolution)逐步释放至主网络,避免初始训练阶段的噪声干扰。视频条件通过时序掩码控制扩散范围。

VectorShift的博客 137

在Xcode项目中读取plist文件

plist(Property list) 文件即属性列表文件,类似于XML格式的一种配置文件,里面可保存序列化的对象。这种plist文件在Mac OS X及相关产品中常见到,下面是在Xcode中如果读取或写入plist文件的示例。 读取一般的plist文件 实践证明,方法1比较靠谱 方法1: // 取得文件路径 ... NSString *plistPath =

九头鹰 9063

【光子 AI】AI Agent 知识体系深度研究报告

从理论基础到前沿应用:全面解析人工智能代理的核心架构、关键技术与发展趋势📅 2026 年 3 月 | 📊 深度研究报告 | 🔬 人工智能领域 | 📈 前沿技术分析**AI Agent(人工智能代理)**是一种能够感知环境、基于所获得的信息做出决策,并执行行动以影响该环境的软件系统。AI Agent 的设计旨在模仿或实现智能行为,它们可以在各种环境中操作,包括物理世界和虚拟空间。随着大语言模型(LLM)技术的突破性进展,AI Agent 正从实验室研究快速走向产业应用。根据 Gartner 发布的《2

AI天才研究院 176

python3 读取.plist文件_在Python中解析plist文件

我的Python代码有问题。我有一个plist文件。在Python中解析plist文件的Info.plistApple Car Version1.0Last Backup DateProduct TypeiPad2,5Product Version9.3.1我的Python代码:import osimport plistlibdef main():fileName=os.path.expandus...

weixin_39629947的博客 1472

2024届数字IC秋招-华为机试-数字芯片-笔试真题和答案(一)(含2022年和2023年)

此部分包含华为机试真题,方向是数字芯片,内容详细包括设计、验证、后端等,大部分题目给出参考答案。华为机试都是从题库里抽题目,所以这些题目还是很有参考性的,甚至是完全一样,可以搜到的。(题目内容较多,将分开编写几个文章)A. genvarB. integerC. wireD.reg参考答案:AA.综合的时候,define无法跨文件列表生效B.宏定义文件最好放在一个文件中集中管理,防止出现不同的项目需要修改不同的宏定义值,但是却漏改了某些地方的情况出现。

qq_42135020的博客 5779

【数据集4】GSWP3数据集详解

简介GSWP3数据集

WW、forever的博客 1366

plist文件的创建与读取

#pragma mark -- 写入文件     NSArray *array = @[@1,@2,@3,@4,@5];          [array writeToFile:@"/Users/xiaopeng/Desktop/BAK/info.plist" atomically:YES];               NSArray *are

xiaopeng5130301994的博客 851

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

cocos2dx中读取.plist文件方法

我也不太专业,主要做个记录 1  把.plist文件放在Resources文件中读取           FileUtils *fu = FileUtils::getInstance(); auto vm = fu->getValueMapFromFile("Chinese.plist"); // info_win = vm["win"].asString().c_str();

feiyinbuerfamen的博客 2368

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

在IOS中如何读取系统产生的plist文件和自定义的plist文件

IOS中,读取系统产生的plist文件和用户自定义的plist文件写法是不一样的。这里记录下来,供有需要的网友参考下。  //读取自定义的 plist文件的写法     NSString *plistPath = [[NSBundle mainBundle] pathForResource:@"customInfo" ofType:@"plist"];     NSDict

u013250412的专栏 2260

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

上一篇: how to use a C++ Property List (plist) serialization library (MIT license)
下一篇: 配置文件 CCConfiguration
-夜下月光-
博客等级 码龄15年 20粉丝 35原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值