2015-12-02 52 views
0

这个例子在字典中搜索字符串包含一个待办事项应用方面,我有以下的代码,以待完成添加到列表:阵列中的迅速

let userDefaults:NSUserDefaults = NSUserDefaults.standardUserDefaults() 
var itemList:NSMutableArray = userDefaults.objectForKey("itemList") as NSMutableArray 
let dataSet:NSMutableDictionary = NSMutableDictionary() 
dataSet.setObject(titleTextField.text, forKey: "itemTitle")    
dataSet.setObject(notesTextField.text, forKey: "itemNotes") 

if ((itemList) != nil) { 
     let newList:NSMutableArray = NSMutableArray(
     for dict:AnyObject in itemList{ 
      newList.addObject(dict as! NSDictionary) 
     } 
     userDefaults.removeObjectForKey("itemList") 
     newList.addObject(dataSet) 
     userDefaults.setObject(newList, forKey: "itemList") 
} 
else{ 
     userDefaults.removeObjectForKey("itemList") 
     itemList = NSMutableArray(
     itemList.addObject(dataSet) 
     userDefaults.setObject(itemList, forKey: "itemList") 
} 

userDefaults.synchronize() 
self.navigationController.popToRootViewControllerAnimated(true) 

我怎么会在字典中查找/ array查找多个itemTitle,这样如果用户创建标题两次,它会向它们发送一条错误消息,通知它们他们创建了标题两次,并且在添加新的待办事项之前必须更改它?

+1

两条建议:Todo's很容易用数据库图表示,因此CoreData是一个更好/更简单的解决方案。将代码中的所有'!'替换为适当的向下转换或可选的绑定。 –

+0

谢谢,我明白,使用CoreData更容易,但我仍然想知道答案,而不必使用CoreData,谢谢 – user2976917

+0

更新问题中的代码,使其没有更多问题的解压缩/ downcasts。除此之外没有什么意义。 –

回答

0

继承人我做了什么来解决这个问题:

在挽救了待办事项我的按钮...

let userDefaults:NSUserDefaults = NSUserDefaults.standardUserDefaults() 
let itemList:NSMutableArray? = userDefaults.objectForKey("itemList") as? NSMutableArray 
if (itemList?.count > 0) { 
     array1 = (itemList?.valueForKey("itemTitle"))! as! [String] 
     if (array1.count > 0) { 
      for i in 0...array1.count-1 { 
       if array1[i] == titleText { 
        print("title is already in the to do list") 
       } 
      } 
     } 
    } 
0

使用谓词在SWIFT 2

阵列中的搜索特定的键
let myPredicate = NSPredicate(format: "education_name contains[c]%@",passedString) 
let mySearchingArray = arrayHoldingData.filteredArrayUsingPredicate(myPredicate)