gpt4 book ai didi

iphone - iOS 5 : Is it possible to write a struct to a plist file?

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:23:08 24 4
gpt4 key购买 nike

我有一个定义如下的结构:

typedef struct {
NSString *SportName;
NSInteger numberOfPeriods;
CFTimeInterval periodLength;
NSString *periodName;
CFTimeInterval secondaryClockTime;
NSString *LeftSecondaryCounterName;
NSString *RightSecondaryCounterName;
bool PossessionArrow;
} GamePreset;

是否可以将 GamePreset 类型的变量写入 plist 文件?

最佳答案

没有内置支持将任意 struct 编写为属性列表。您必须编写一个将结构转换为属性列表的方法。

理论上,您可以在运行时通过解析 @encode(GamePreset) 的结果来完成此操作,该结果(在编译时)被替换为描述 GamePreset< 的字符串:

NSLog(@"encode = %s", @encode(GamePreset));
...
2012-03-04 00:57:43.456 encodetest[43337:903] encode = {?=@qd@d@@B}

这有严重的缺点。一个是你没有得到字段名,所以你的 plist 不会特别有用,除非读者知道 struct 格式,以及对 struct 的任何更改' s 布局将使保存的 plists 不可读。

另一个很大的缺点是@encode 字符串没有任何关于结构填充的信息。解析字符串时必须考虑到它。我认为您可以使用 NSGetSizeAndAlignment 来帮助解决这个问题。

如果您想冒险尝试这个,请阅读 “Type Encodings” section of the Objective-C Runtime Programming Guide

我建议您硬着头皮编写一个简单的函数,使用结构布局的硬编码知识获取 GamePreset * 并返回 NSDictionary *

关于iphone - iOS 5 : Is it possible to write a struct to a plist file?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9552952/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com