2015-12-02 2 views
0

Этот пример включает в себя контекст TODO приложения, у меня есть следующий код, чтобы добавить TODO к списку:Поиск строки в словаре в массиве быстрой

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) 

Как бы искать в словаре/массив, чтобы искать несколько itemTitle, чтобы, если пользователь дважды создает заголовок, он отправит им сообщение об ошибке, сообщающее им, что они создали заголовок дважды, и его необходимо изменить, прежде чем добавить новое todo?

+1

два предложения: Todo легко представлены графиком базы данных, и поэтому CoreData - это намного лучшее/более простое решение. Замените все '!' В вашем коде соответствующими сокращениями или необязательными привязками. –

+0

Спасибо, я понимаю, что использование CoreData проще, но я все равно хотел бы знать ответ, не используя CoreData, спасибо – user2976917

+0

Обновите свой код в вопросе, чтобы у него не было более проблемных силовых переводов/понижений. В остальном мало смысла. –

ответ

0

Вот что я сделал, чтобы решить эту проблему:

В кнопке, сохранен, чтобы сделать список I ...

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

Использование предиката для поиска конкретного ключа в массиве в СВИФТ 2

let myPredicate = NSPredicate(format: "education_name contains[c]%@",passedString) 
let mySearchingArray = arrayHoldingData.filteredArrayUsingPredicate(myPredicate) 
Смежные вопросы