Ios 从plist读取数组,并仅在找到匹配项时返回项
我正在努力克服困难。。。 现在我只想获取项目1,如果它是一种软类型,我如何实现这一点 我正试着整理我的方式通过它,但它不工作Ios 从plist读取数组,并仅在找到匹配项时返回项,ios,swift,plist,nssortdescriptor,Ios,Swift,Plist,Nssortdescriptor,我正在努力克服困难。。。 现在我只想获取项目1,如果它是一种软类型,我如何实现这一点 我正试着整理我的方式通过它,但它不工作 var path = NSBundle.mainBundle().pathForResource("radioChannels", ofType: "plist") self.menuItemArray = NSMutableArray(contentsOfFile: path!) as NSMutableArray! for obj: AnyObjec
var path = NSBundle.mainBundle().pathForResource("radioChannels", ofType: "plist")
self.menuItemArray = NSMutableArray(contentsOfFile: path!) as NSMutableArray!
for obj: AnyObject in menuItemArray {
if let dict = obj as? NSDictionary {
if let menuPunkt = dict["genre"] as? String {
if menuPunkt as String == ("Soft"){
println("Soft \(menuPunkt)")
}
} else {
println("failed with menuPunkt")
}
} else {
println("failed to convert to NSDictionary")
}
}
这个我只试过,但没用
var descriptor: NSSortDescriptor = NSSortDescriptor(key: "Soft", ascending: true)
self.sortedResults = menuItemArray.sortedArrayUsingDescriptors([descriptor])
为什么不使用NSPredicate来过滤流派
let predicate = NSPredicate(format: "genre = 'soft'")!
let filteredArray = self.menuItems.filteredArrayUsingPredicate(predicate)
如注释中所述,使用内置过滤器。下面的代码片段将为您提供一系列类型为“软”的项目: 我更喜欢此解决方案而不是NSPredicate解决方案,原因有两个:首先,一旦您将NSMutableArray键入适当类型的swift数组,它几乎是纯swift,其次,
NSPredicate
对于一个非常简单的问题来说是一个非常沉重的目标-C bat
还请注意,类型转换/检查实际上应该在加载plist时一次性完成,而不是每次构建视图内容时都进行,它实际上只是包含在代码段中以确保完整性。也请尝试一下这段代码
if let path = NSBundle.mainBundle().pathForResource("radioChannels", ofType: "plist") {
if let myArray = NSArray(contentsOfFile: path) {
for dict in myArray {
if let genre = dict["genre"] as? String{
if genre == "genre1" {
print("genre1")
}
}
}
}
}
顶部的循环基本上就是您要寻找的(虽然我会使用过滤器并删除大量代码。我不确定下面的排序应该完成什么,也不确定它与您的问题之间的关系。也不太清楚您的问题到底是什么。您预期不会发生什么?David我只想从plist中获取,如果有一种称为“软”的类型,不是吗然后将其加载到数组中,并在UICollectionView中显示。是否要在此plist中查找流派?是的,如果流派有一个软字符串,则将其加载到数组中,不仅仅是软项目,而是整个项目
if let path = NSBundle.mainBundle().pathForResource("radioChannels", ofType: "plist") {
if let myArray = NSArray(contentsOfFile: path) {
for dict in myArray {
if let genre = dict["genre"] as? String{
if genre == "genre1" {
print("genre1")
}
}
}
}
}