将数据插入数组 [Swift]
Insert data into array [Swift]
首先,我为我糟糕的英语感到抱歉!
我对使用 Apple Swift 语言将值插入数组有疑问。
我在 Swift 和 iOS 开发方面绝对是新手,所以我不得不再说一次对不起。
我有一个 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?
}
一切正常。现在我尝试将此数据转换为数组并将其推送到 UIPicker。我的数组是:
var Years = getList("Years")?.objectForKey("Years") as NSArray
有一个问题:我正在尝试将数据插入我的数组中,但出现了一些错误。我已经尝试了一切......我想将新值插入零索引,但是 insert 方法不起作用,append 方法不起作用也是(NSArray 没有这个方法,好吧)。我试过使用 NSMutableArray - 没有。据我所知,NSMutableArray 有 addObject 和 insertObject 方法,我
也有错误 (error: Void is not conversionble to NSArray)
我做错了什么?我怎样才能简单地将值插入数组的末尾和零索引?
NSArray 和 ["value", ...] 是不同的东西吗?
感谢帮助!
如果 Years 实际上是一个 NSArray,您不能向它添加任何东西,因为它是不可变的。您需要制作一个可变副本,
var Years = getList("Years")?.objectForKey("Years") as NSArray
var mutableYears = Years.mutableCopy() as NSMutableArray
mutableYears.addObject("2016")
mutableYears.insertObject("2009", atIndex:0)
您真的应该以小写字母开头您的变量名。
首先,我为我糟糕的英语感到抱歉! 我对使用 Apple Swift 语言将值插入数组有疑问。 我在 Swift 和 iOS 开发方面绝对是新手,所以我不得不再说一次对不起。
我有一个 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?
}
一切正常。现在我尝试将此数据转换为数组并将其推送到 UIPicker。我的数组是:
var Years = getList("Years")?.objectForKey("Years") as NSArray
有一个问题:我正在尝试将数据插入我的数组中,但出现了一些错误。我已经尝试了一切......我想将新值插入零索引,但是 insert 方法不起作用,append 方法不起作用也是(NSArray 没有这个方法,好吧)。我试过使用 NSMutableArray - 没有。据我所知,NSMutableArray 有 addObject 和 insertObject 方法,我 也有错误 (error: Void is not conversionble to NSArray)
我做错了什么?我怎样才能简单地将值插入数组的末尾和零索引?
NSArray 和 ["value", ...] 是不同的东西吗?
感谢帮助!
如果 Years 实际上是一个 NSArray,您不能向它添加任何东西,因为它是不可变的。您需要制作一个可变副本,
var Years = getList("Years")?.objectForKey("Years") as NSArray
var mutableYears = Years.mutableCopy() as NSMutableArray
mutableYears.addObject("2016")
mutableYears.insertObject("2009", atIndex:0)
您真的应该以小写字母开头您的变量名。