从一个快速的plist创建一个字典数组

时间:2015-02-15 18:36:14

标签: swift

我对Swift很新(并且可以做基本的Objective C但不多于此)。我有一个词典,我试图将它加载到一个数组中。这是我的代码:

            let resultArray = NSArray(contentsOfFile: bundlePath)!
            var swiftArray = [Dictionary<String,String>]()
            for (var i = 0; i < resultArray.count; i++){
                swiftArray.addObject(resultArray.objectAtIndex(i))
            }

我知道resultArray已正确创建。但是,此代码的最后一行给出了错误[(Dictionary<String,String>)] does not have a member named 'addObject'.

如何将这些词典加载到swiftArray

感谢您的帮助,伙伴和女士。

3 个答案:

答案 0 :(得分:2)

使用append方法代替addObject。 Swift数组没有addObject方法。

swiftArray.append(resultArray.objectAtIndex(i) as Dictionary<String, String>)

或者只是将NSArray转换为快速数组

var swiftArray = resultArray as [AnyObject] as [Dictionary<String, String>]

答案 1 :(得分:1)

使用Swift:我使用plist来存储我的字典数组,使用NSMutableArray加载它。我展示了一种在for循环中获取下面数据的方法。

// globals
var myArray = NSMutableArray()
var SamplePath = NSString()

SamplePath = NSBundle.mainBundle().pathForResource("MyFile", ofType: "plist")!
myArray = NSMutableArray(contentsOfFile: SamplePath as String)!

var i = 0 
for myElement in myArray {
    println(myArray[i]["Title"]as! String, myArray[i]["start"]as! Int, myArray[i]["detail"]as! String)
    i++
}

当我需要进行额外的操作时,我创建了一个临时结构来加载单个Dictionary的值,但是使用NSMutableArray的setValue函数可以将简单的东西直接写入数组元素:

myArray[Index].setValue(b, forKey:"Title").

答案 2 :(得分:0)

你应该能够简单地利用NSArray桥接:

var swiftArray = NSArray(contentsOfFile: file) as! [Dictionary<String,String>] 

例如:

39> arNS
$R9: NSArray = "2 values" {
  [0] = 1 key/value pair {
    [0] = {
      0 = (instance_type = 0x0000000102002da0 )
      1 = (instance_type = 0x0000000000000003)
    }
  }
  [1] = 1 key/value pair {
    [0] = {
      0 = (instance_type = 0x00000001020060e0 )
      1 = (instance_type = 0x0000000000000003)
    }
  }
}

40> var arSW = arNS as! [[String:Int]] 
arSW: [[String : Int]] = 2 values {
  [0] = {
    [0] = {
      key = "abc"
      value = 1
    }
  }
  [1] = {
    [0] = {
      key = "xyz"
      value = 2
    }
  }
}

注意:我赞赏你离开NSArray。如果您发现自己需要在Swift中处理NSArray方法,可以考虑添加Swift Array扩展来实现NSArray方法,但立即转换为Array。

相关问题