簡體   English   中英

plist文件中的NSArray或NSDictionary

[英]NSArray or NSDictionary from plist file

在一種方法中,我需要從plist文件讀取NSArrayNSDictionary

這是我的問題:不知道其中是數組還是字典時,如何從plist文件創建NSArrayNSDictionary

我知道我可以做到:

NSArray *myArray = [NSArray arrayWithContentsOfFile:filePath];

要么

NSDictionary *myDico = [NSDictionary dictionaryWithContentsOfFile:filePath];

但是我不知道filePath是否包含NSArrayNSDictionary 我想要類似的東西:

id myObject = [... ...WithContentOfFile:filePath];

有人可以幫助我,給我最好的方法嗎?

這是如何做

NSData *data = [NSData dataWithContentsOfFile:filePath];
id obj = [NSPropertyListSerialization propertyListWithData:data options:NSPropertyListImmutable format:NULL error:nil];

if([obj isKindOfClass:[NSDictionary class]]) {
    //cast obj to NSDictionary
}
else if([obj isKindOfClass:[NSArray class]]) {
    //cast obj to NSArray
}

您可以使用isKindOfClass方法檢測該類。 您將必須使用以下方式加載.plist文件:

NSString *rootPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
plistPath = [rootPath stringByAppendingPathComponent:@"Data.plist"];
if (![[NSFileManager defaultManager] fileExistsAtPath:plistPath]) {
    plistPath = [[NSBundle mainBundle] pathForResource:@"Data" ofType:@"plist"];
}

NSData *plistXML = [[NSFileManager defaultManager] contentsAtPath:plistPath];
id objectFromPlist = [NSPropertyListSerialization
   propertyListWithData:plistXML
   options:0
   format:&format
   errorDescription:&errorDesc];

您可以在這里查看:

if([objectFromPlist isKindOfClass:[NSArray class]])
{
    NSArray* plistArray = (NSArray*) classFromPlist;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM