代码之家  ›  专栏  ›  技术社区  ›  user3195648

在特定条件下从plist读取数据

  •  0
  • user3195648  · 技术社区  · 12 年前

    我的Xcode项目中有一个.plist,如下所示

        <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
    <plist version="1.0">
    <dict>
        <key>Steve</key>
        <dict>
            <key>married</key>
            <true/>
            <key>website</key>
            <string>http://www.abc.com</string>
        </dict>
        <key>Bill</key>
        <dict>
            <key>website</key>
            <string>http://www.cab.com</string>
            <key>married</key>
            <false/>
        </dict>
    </dict>
    </plist>
    

    所以现在我只想看看这个网站,如果结婚是真的。上面的plist只是一个例子,我知道它毫无意义。你能帮帮我吗 编辑我现在这样做:

    if ([[dict objectForKey:@"married"] boolValue]) {
            NSLog(@"(Y)");
        }
    

    但如果我对每一句话都这么做,那就很难了,我想我可以做得更容易,但我不知道怎么做。

    1 回复  |  直到 12 年前
        1
  •  0
  •   Harsh    12 年前

    我不清楚你的问题,但根据我的理解,我认为你希望实现一个for each循环,所以下面是如何一次完成整个plist:

    NSMutableArray *arryaOfBools =  [[NSMutableArray alloc] init];//To keep the values if you wnat
    NSDictionary *dictioanry =  [[NSDictionary alloc] init];// initialize your plist
    // this for each will traverse through every dictionary present in the plist
    for(NSDictionary * dict in dictioanry ){
     /// you can do anything here as per your requirements 
     [arryaOfBools addObject:[dict valueForKey:@"married"]];
    }
    

    希望这能回答你的问题。。

    编辑:

    以下是代码的解决方案

    NSDictionary *senderDictionary = [NSDictionary dictionaryWithContentsOfFile:filePathforPlsit];
    
    for(NSString *keyValue in senderDictionary){
        [[senderDictionary valueForKey:keyValue] valueForKey:@"shortcut"];
    }