如何访问此 Plist 中的数据?

Posted

技术标签:

【中文标题】如何访问此 Plist 中的数据?【英文标题】:How do I access the data in this Plist? 【发布时间】:2014-12-11 21:32:29 【问题描述】:

我一直在尝试获取这些数据,将其加载到两个数组中,并最终将它们传递给Swift-Linechart。 目前,我正在使用它来加载数据:

func loadUserData()
        var myDict: NSDictionary?

        if let path = NSBundle.mainBundle().pathForResource("UserData", ofType: "plist") 
            if let dict = NSDictionary(contentsOfFile: path) as? Dictionary<String, AnyObject> 
                userData = dict
            
        
    

一旦我将 userData 放入 dict 中,如何将其放入 CGFLoat 值数组中以便绘制图表?


用户数据.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>Triggers</key>
    <dict>
        <key>Alcoholic Drinks</key>
        <array>
            <array>
                <date>2014-12-03T16:28:53Z</date>
                <string>3</string>
            </array>
            <array>
                <date>2014-12-04T16:29:33Z</date>
                <string>0</string>
            </array>
        </array>
        <key>Caffeinated Drinks</key>
        <array>
            <array>
                <date>2014-12-03T16:30:22Z</date>
                <string>2</string>
            </array>
            <array>
                <date>2014-12-04T16:30:02Z</date>
                <string>1</string>
            </array>
        </array>
    </dict>
    <key>Symptoms</key>
    <dict>
        <key>Redness</key>
        <array>
            <array>
                <date>2014-12-03T16:25:21Z</date>
                <string>0.75</string>
            </array>
            <array>
                <date>2014-12-04T16:25:51Z</date>
                <string>0.5</string>
            </array>
        </array>
        <key>Swelling</key>
        <array>
            <array>
                <date>2014-12-03T16:27:00Z</date>
                <string>.6</string>
            </array>
            <array>
                <date>2014-12-04T16:27:52Z</date>
                <string>.2</string>
            </array>
        </array>
    </dict>
</dict>
</plist>

【问题讨论】:

由于您的最后一个问题是关于如何从字典中获取数据,因此您应该发布字典,而不是 plist xml。 您的 plist 中没有数字。我希望你是打算做数字的。 【参考方案1】:

假设您将 plist 中的字符串转换为数字。这将提取症状->红肿数据:

func parseRednessData() 
    let symptoms = userData?["Symptoms"] as [String: AnyObject]
    let redness = symptoms["Redness"] as [[AnyObject]]
    let floats = redness.map  $0[1] as Float 
    println(floats)

以上述为例,提取其他数据位。

编辑

我注意到在我的原始代码中,floats 实际上是 AnyObject 的数组。我修好了。

【讨论】:

谢谢!这正是我所需要的。是的,我确实将它们从字符串更改为数字。

以上是关于如何访问此 Plist 中的数据?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 SWIFT 在 plist 中访问数组及其对象?

如何访问多级结构化 Plist

如何保护 ios 应用程序中的默认 plist 文件

我将如何更改此静态数组以从 xCode 中的此 plist 中提取?

如何仅从 plist 文件中加载选定的数据

如何在信息 plist 中的 Key 下保存 NSString?