2015-12-02 51 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)