【发布时间】:2015-01-21 07:51:06
【问题描述】:
我有一个 plist 文件(“myAwayList.plist”)来存储导航数据。我在主字典的数组中嵌套了一个字符串变量字典,如下所示..
<dict>
<key>Locations</key>
<array>
<dict>
<key>Name</key>
<string>Sydney City Centre</string>
<key>Address</key>
<string>Centrepoint Tower</string>
<key>Lat</key>
<string>-33.870451</string>
<key>Lon</key>
<string>151.208771</string>
</dict> ...
我可以通过以下方式成功加载并使用里面的数组数据...
let paths = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true) as NSArray
let documentsDirectory = paths.objectAtIndex(0)as NSString
let path = documentsDirectory.stringByAppendingPathComponent("myAwayList.plist")
let fileManager = NSFileManager.defaultManager()
// Check if file exists
if(!fileManager.fileExistsAtPath(path))
{
// If it doesn't, copy it from the default file in the Resources folder
let bundle = NSBundle.mainBundle().pathForResource("myAwayList", ofType: "plist")
fileManager.copyItemAtPath(bundle!, toPath: path, error:nil)
println("File did not exist! Default copied...")
}
let dict = NSDictionary(contentsOfFile: path)!
let mySavedLocations: AnyObject = dict.objectForKey("Locations")!
println("plist all: \(mySavedLocations)")
if let nsArray:NSArray = mySavedLocations as? NSArray{
for var loadCount = 0; loadCount < mySavedLocations.count; ++loadCount {
var locationDict:AnyObject = nsArray[loadCount] // loading array data at index
let arrayName = locationDict["Name"] as AnyObject? as String
let arrayAddress = locationDict["Address"] as AnyObject? as String
let arrayLat = locationDict["Lat"] as AnyObject? as String
let arrayLon = locationDict["Lon"] as AnyObject? as String
awaydatalist.append(AwayData(name:arrayName, address:arrayAddress, lat:arrayLat, lon:arrayLon)) // This is a list array used to display the loaded data on a ViewController
}
}
我现在想在数组里面追加另一行数据,然后写回 plist 文件,但我找不到办法。请指教? 克里斯
【问题讨论】:
-
您想在数组中添加新字典并更新 plist 中的数据。对吗?
标签: ios swift nsdictionary plist