Iphone iOS 5:是否可以将结构写入plist文件?
我有一个定义如下的结构:Iphone iOS 5:是否可以将结构写入plist文件?,iphone,ios,file,struct,plist,Iphone,Ios,File,Struct,Plist,我有一个定义如下的结构: typedef struct { NSString *SportName; NSInteger numberOfPeriods; CFTimeInterval periodLength; NSString *periodName; CFTimeInterval secondaryClockTime; NSString *LeftSecondaryCounterName; NSString *RightSeconda
typedef struct {
NSString *SportName;
NSInteger numberOfPeriods;
CFTimeInterval periodLength;
NSString *periodName;
CFTimeInterval secondaryClockTime;
NSString *LeftSecondaryCounterName;
NSString *RightSecondaryCounterName;
bool PossessionArrow;
} GamePreset;
是否可以将GamePreset类型的变量写入plist文件?不支持将任意
结构写入属性列表。您必须编写一个将结构转换为属性列表的方法
理论上,您可以在运行时解析@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
布局的任何更改都会使保存的plist无法读取
另一个大缺点是@encode
字符串没有任何关于结构填充的信息。在解析字符串时,必须对其进行解释。我想你可以用它来帮忙
如果你想拿自己的理智冒险,试试这个,请阅读
我建议您咬紧牙关,编写一个简单的函数,使用结构布局的硬编码知识获取一个GamePreset*
,并返回一个NSDictionary*
。看起来将其编码为字符串的难度大约是从GamePreset编写-(NSDictionary*)词典的10倍:(GamePreset)NewGamePreset
命令…哦,好吧。