[英]How to create a NSDictionary in NSMutableArray in iPhone?
[英]How to determine if plist contains NSDictionary or NSMutableArray?
根據我的情況,我可能對這個問題的措詞有誤-抱歉。
這是問題所在:在我的應用程序的早期版本中,我使用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
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.