【发布时间】:2016-02-15 14:18:24
【问题描述】:
我正在尝试从 plist (PetList.plist) 中读取信息,但我不知道为什么它失败了。变量路径是正确的,但是 myDict 为 nil,else 部分被执行。我想要做的是加载信息表单 plist,然后将值分配给宠物数组。
var pets = 宠物
func loadGameData() {
let path = NSBundle.mainBundle().pathForResource("PetList", ofType: "plist")
let myDict = NSDictionary(contentsOfFile: path!)
if let dict = myDict {
//loading values
for i in 0..<pets.count {
pets[i].petName = dict.objectForKey("petName")!.absoluteString!
pets[i].health = dict.objectForKey("health")!.absoluteString!
pets[i].experience = dict.objectForKey("experience")!.absoluteString!
pets[i].hungry = dict.objectForKey("hungry")!.absoluteString!
pets[i].energy = dict.objectForKey("energy")!.absoluteString!
pets[i].level = dict.objectForKey("level")!.absoluteString!
pets[i].status = dict.objectForKey("status")!.absoluteString!
pets[i].searchKey = dict.objectForKey("searchKey")!.absoluteString!
pets[i].cleanliness = dict.objectForKey("cleanliness")!.absoluteString!
pets[i].isChoosed = dict.objectForKey("isChoosed")!.absoluteString!
pets[i].skill = dict.objectForKey("skill")!.absoluteString!
pets[i].imageName = dict.objectForKey("imageName")!.absoluteString!
}
} else {
print("WARNING: Couldn't create dictionary from PetList.plist! Default values will be used!")
}
}
【问题讨论】:
-
而
PetList.plist实际上在 app bundle 中? -
字典中的所有值都是
NSURL对象还是absoluteString的用途?除此之外,您正在创建具有相同内容的pets.count对象。集合类型之一必须是数组。 -
是的,@trojanfo 这是我打印的路径。 /Users/Neo/Library/Developer/CoreSimulator/Devices/1276FC11-668D-4CAC-87AE-C61141DD00E4/data/Containers/Bundle/Application/06DEB9B7-B58F-417C-8232-3F3796630F80/CandyPets.app/PetList.plist跨度>
-
@vadian absoluteString 用于获取字符串。但 myDict 为 nil,它们不会运行。
-
absoluteString是NSURL类的属性,用于获取符合 RFC 1808 的 URL 字符串表示。打印出myDict,我怀疑不是字典