gpt4 book ai didi

ios - 从 plist 中读取数组,只有在找到匹配项时才返回项目

转载 作者:搜寻专家 更新时间:2023-11-01 06:47:47 25 4
gpt4 key购买 nike

我正在尝试通过 plist 工作...现在我只想获取 item 1,如果它是一种 Soft 我该如何实现?

我正在尝试通过它进行排序,但它不起作用...

 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])

Plist

最佳答案

如评论中所述,使用内置过滤器。以下代码段将为您提供一系列类型为“软”的项目:

if let menuItemArray = menuItemArray as? [[String:AnyObject]] {
var softItems = menuItemArray.filter({
if let genre = $0["genre"] as? String {
return genre.lowercaseString == "soft"
}
return false
})
println("\(softItems)")
}

我更喜欢这个解决方案而不是 NSPredicate 解决方案有几个原因,首先,一旦你将 NSMutableArray 类型转换为适当类型的 swift 数组,它几乎是纯粹的 swift,其次,NSPredicate对于一个非常简单的问题来说是一个相当沉重的 Objective-C bat 。

另请注意,类型转换/检查实际上应该在加载 plist 时一次性完成,而不是在每次构建 View 内容时都进行,它实际上只是为了完整性而包含在代码段中。

关于ios - 从 plist 中读取数组,只有在找到匹配项时才返回项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28197648/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com