我在獲取簡單的命令行時遇到實際問題OSX Swift程序從簡單的.plist XML文件讀取數據 - 事實上,程序無法即使看起來存在並複製到文件夾中,也可以看到該文件。Swift無法找到並讀取屬性列表(.plist)文件
的數據由,是爲了讀出和所述的plist數據複製到其中它可以無需plist中需要被再次查詢檢索的陣列的類處理:
// Datadump.swift
import Foundation
class Datadump {
//array of dictionaries containing string keys and any datatype of value
var dataArray : Array<Dictionary<String,AnyObject>>
init() {
//copies data from plist
let bundle = NSBundle.mainBundle()
let path = bundle.pathForResource("Hardware", ofType: "plist")
//check file located
print("File Location: \(path) ")
let productArray = NSArray(contentsOfFile: path!)
dataArray = productArray as! Array<Dictionary<String,AnyObject>>
}
//returns tuple based on product id
func getData(prodId: Int) -> (String, Int) {
//returned vars
var price = 0
var name : String = ""
//iterate through array until relevant product is found
for dict in dataArray{
if dict["ProdId"] as! Int == prodId{
price = dict["Price"] as! Int
name = dict["Name"] as! String
break
}
}
return (name, price);
}
}
然而,程序失敗一個致命的錯誤,一旦:達到
let productArray = NSArray(contentsOfFile: path!)
線,與輸出:
文件位置:無致命錯誤:意外發現零,而unwrappin g an可選值
打印語句確認程序無法找到Hardware.plist文件。
主程序只是創建和類的實例,並運行一個功能,但顯然上面提到的類運行,一旦失敗,因爲在init():
// main.swift
import Foundation
//creates instance of Datadump class
var myData = Datadump()
//queries data, copies result to tuple
let (nam, pri) = myData.getData(123)
print ("Name: \(nam) Price: \(pri)")
的Hardware.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">
<array>
<dict>
<key>Name</key>
<string>Intel i7 CPU</string>
<key>Price</key>
<integer>13995</integer>
<key>ProdId</key>
<integer>123</integer>
</dict>
<dict>
<key>Name</key>
<string>19" Monitor</string>
<key>Price</key>
<integer>9995</integer>
<key>ProdId</key>
<integer>456</integer>
</dict>
<dict>
<key>Name</key>
<string>8GB DDR Ram</string>
<key>Price</key>
<integer>4595</integer>
<key>ProdId</key>
<integer>789</integer>
</dict>
</array>
</plist>
我試過了我能想到的一切,包括查看.plist文件的設置並以不同的方式重新導入它。
任何幫助將不勝感激!
非常感謝, Kwangle
「儘管它似乎存在並複製到捆綁」但沒有「貌似」。是或不是?我敢打賭,事實並非如此。你可以打開構建的應用程序,直接看它,看看,你知道。 – matt
它在文件導航器中可見,我使用了「添加文件」功能並直接將其拖到項目窗口中。我將如何明確檢查?謝謝你的幫助。 – Kwangle
「我使用了」添加文件「功能,並直接將其拖到項目窗口中」將其添加到_project_,但不一定會將其添加到_app target_。 – matt