首先,我很抱歉我的英语不好! 我有一个关于使用Apple Swift语言将值插入数组的问题。 我在Swift和iOS开发方面都是新手,所以我不得不再说SORRY了。
我有一个plist文件和一个读取它并将数据转换为NSDictionary的方法。我在Picker中使用的这些数据。
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>Years</key>
<array>
<string>2010</string>
<string>2011</string>
<string>2012</string>
<string>2013</string>
<string>2014</string>
<string>2015</string>
</array>
</dict>
</plist>
阅读和转换的方法:
func getList(fileName: String) -> NSDictionary? {
var myDict: NSDictionary?
if let path = NSBundle.mainBundle().pathForResource(fileName, ofType: "plist") {
myDict = NSDictionary(contentsOfFile: path)
}
return myDict?
}
一切都好。现在我尝试将此数据转换为Array并将其推送到UIPicker。我的阵列是:
var Years = getList("Years")?.objectForKey("Years") as NSArray
有一个问题:我正在尝试将数据插入到我的数组中,并且我遇到了一些错误。我已尝试过所有内容......我想将新值插入零索引,但插入方法无法正常工作,追加方法也无法正常工作(NSArray没有这个方法,好的)。我试过使用NSMutableArray - 没什么。据我所知,NSMutableArray有 addObject 和 insertObject 方法,而我 也有错误(错误:Void不能转换为NSArray)
我做错了什么?我怎样才能简单地将值插入数组的末尾和零索引?
NSArray和[“value”,......]是不同的东西?
感谢您的帮助!
答案 0 :(得分:1)
如果Years实际上是一个NSArray,你不能添加任何东西,因为它是不可变的。你需要制作一个可变副本,
var Years = getList("Years")?.objectForKey("Years") as NSArray
var mutableYears = Years.mutableCopy() as NSMutableArray
mutableYears.addObject("2016")
mutableYears.insertObject("2009", atIndex:0)
你真的应该用小写字母开始你的变量名。