[英]How we can find an element from [AnyObject] type array in swift
我有 [AnyObject] 数组
var updatedPos = [AnyObject]()
我正在根据我的要求设置数据!
let para:NSMutableDictionary = NSMutableDictionary()
para.setValue(posId, forKey: "id")
para.setValue(posName, forKey: "job")
let jsonData = try! NSJSONSerialization.dataWithJSONObject(para, options: NSJSONWritingOptions())
let jsonString = NSString(data: jsonData, encoding: NSUTF8StringEncoding) as! String
self.updatedPos.append(jsonString)
现在在我的代码中,我有一些要求从这个数组中删除对象,其中id根据要求匹配这里是我试图实现的代码
for var i = 0; i < updatedPos.count; i++
{
let posItem = updatedPos[i]
print("Id=\(posItem)")
let pId = posItem["id"] as? String
print("secRId=\(pId)")
if removeId! == pId!
{
updatedPos.removeAtIndex(i)
}
}
这里print("Id=\\(posItem)")
给我输出为Id={"id":"51","job":"Programmer"}
但在这里我无法从这个对象访问id 。 这里print("secRId=\\(pId)")
给我零
例如,您的[AnyObject]
数组也可以声明为字典数组[[String:AnyObject]]
var updatedPos = [[String:AnyObject]]()
现在创建字典并将它们添加到数组中(在您的示例中,字典实际上是[String:String]
但我保留了AnyObject
值)。
let para1 : [String:AnyObject] = ["id" : "51", "job" : "Programmer"]
let para2 : [String:AnyObject] = ["id" : "12", "job" : "Designer"]
updatedPos.append(para1)
updatedPos.append(para2)
如果id
删除项目,请使用过滤器功能
let removeId = "12"
updatedPos = updatedPos.filter { $0["id"] as? String != removeId }
或者
if let indexToDelete = updatedPos.indexOf{ $0["id"] as? String == removeId} {
updatedPos.removeAtIndex(indexToDelete)
}
您提供的代码不需要 JSON 序列化。
PS:永远不要写valueForKey:
和setValue:forKey:
除非你确切地知道它在做什么。
经过一些小事后,我找到了我的问题的非常简单和最佳的解决方案。 我想特别感谢@vadian。 因为他在这里教我新东西。 嘿,非常感谢@vadian
最后的答案是我有json Format
隐蔽posItem
用于从Id={"id":"51","job":"Programmer"}
这个字符串中查找id
方法是
let data = posItem.dataUsingEncoding(NSASCIIStringEncoding, allowLossyConversion: false)
do {
let json = try NSJSONSerialization.JSONObjectWithData(data!, options: NSJSONReadingOptions.MutableContainers)
if let dict = json as? [String: AnyObject] {
let id = dict["id"]
if removeId! == id! as! String
{
updatedLoc.removeAtIndex(i)
}
}
}
catch {
print(error)
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.