gpt4 book ai didi

iphone - 如何判断plist中是否包含NSDictionary或NSMutableArray?

转载 作者:行者123 更新时间:2023-12-03 20:43:07 28 4
gpt4 key购买 nike

根据我的情况,我可能错误地表述了问题 - 如果是这样,我很抱歉。

问题如下:在我的应用程序的早期版本中,我使用 NSCoding 将 NSMutableArray 保存到 plist。

在新版本中,我添加了设置数据,因此我现在将之前的数组和新数据放入 NSDictionary 中,然后使用 NSCoding。工作正常。

但是,对于此版本,我必须确定现有 plist 是旧版本 (NSMutableArray) 还是新版本 (NSDictionary)。

基本代码是这样的:

NSData *codedData=[[NSData alloc] initWithContentsOfFile:plistPath];
//EITHER this (array): allMsgs=[NSKeyedUnarchiver unarchiveObjectWithData:codedData];
//OR this (nsdict): tmpdict=(NSDictionary *)[NSKeyedUnarchiver unarchiveObjectWithData:codedData];

如何读取 plist 并确定它是 NSDictionary 还是 NSMutableArray 而不会引发错误?

最佳答案

只需将未归档的对象存储为 id,然后使用 isKindOfClass: 检查其类:

id unarchivedObject = [NSKeyedUnarchiver unarchiveObjectWithData:codedData];
if ([unarchivedObject isKindOfClass:[NSArray class]]) {
// do something
} else if ([unarchivedObject isKindOfClass:[NSDictionary class]]) {
// do something else
}

关于iphone - 如何判断plist中是否包含NSDictionary或NSMutableArray?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9944773/

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