2016-02-18 3 views
1

Почему, когда я печатаю MyData массив в содержит в первом положении все мои valueForKey в ноль, как этотCoreData выборки возвращают ноль

func fetchFavorites(){ 

    let fetchRequest = NSFetchRequest(entityName: "Favoritos") 

    do { 
     let result = try moc.executeFetchRequest(fetchRequest) 
     for managedObject in result { 

      if let Fid = managedObject.valueForKey("place_favorite_id"), 
      desc_place = managedObject.valueForKey("desc_place"), 
      place_name = managedObject.valueForKey("place_name"), 
      lat = managedObject.valueForKey("latitude"), 
      lon = managedObject.valueForKey("longitude") { 

       print("\(Fid) \(desc_place) \(place_name) \(lat) \(lon)") 
       Place_Id.append(Fid as! String) 

      } 

     } 
     myData = result 

    } catch { 
     let fetchError = error as NSError 
     print(fetchError) 
    } 
} 

Printed MyData массив

Array[<RivosTaxi.Favoritos: 0x7fb46ff5ac80> (entity: Favoritos; id: 0xd00000000024000e <x-coredata://82CCF746-275D-4FC6-9C5C-EFD1EDED2F21/Favoritos/p9> ; data: { 
"desc_place" = nil; 
latitude = nil; 
longitude = nil; 
"place_favorite_id" = nil; 
"place_name" = nil; 

    }), <RivosTaxi.Favoritos: 0x7fb46ff5af80> (entity: Favoritos; id: 0xd00000000028000e <x-coredata://82CCF746-275D-4FC6-9C5C-EFD1EDED2F21/Favoritos/p10> ; data: { 
"desc_place" = ""; 
latitude = "24.822311"; 
longitude = "-107.4240634"; 
"place_favorite_id" = 94; 
"place_name" = "Otro mad"; 

Это то, что я не понимаю, , первые значения - все ноль, и у меня только 1 строка данных на моем sqlite, а не на двух

Это как y сохранить его в Favoritos Entity

func FavoritosSave(){ 

    let entity = NSEntityDescription.insertNewObjectForEntityForName("Favoritos", inManagedObjectContext: moc) 



    entity.setValue(place_name, forKey: "place_name") 
    entity.setValue(place_favorite, forKey: "place_favorite_id") 
    entity.setValue(desc_place, forKey: "desc_place") 
    entity.setValue(latitude, forKey: "latitude") 
    entity.setValue(longitude, forKey: "longitude") 

    // we save our entity 
    do { 
     try moc.save() 


    } catch { 
     fatalError("Failure to save context: \(error)") 
    } 
} 
+0

Можете ли вы также разместить код, в котором вы создаете и сохранить в CoreData – Breek

+0

Я обновил свой пост – altexo

ответ

2

Ваш запрос на выборку записывается для возврата всех экземпляров с именем объекта «Favoritos». Результат поиска показывает, что вы создали два.

Объяснение только для просмотра одной строки может состоять в том, что ваш MOC не был сохранен. Но переключение дайв-сервера в файл SQLite Core Data - это рецепт разочарования. Используйте документированные API.

Вы должны добавить звонок в fetchFavoritos() в качестве первой строки вашей функции save(), чтобы увидеть, что там, прежде чем создавать экземпляр Favoritos.

Смежные вопросы