为什么当我在第一个位置打印myData数组时,我的所有valueForKey都是nil,就像这样
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)
}
}
打印的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";
这是我不明白的,第一个值都是零,我的sqlite只有1行数据,而不是两行
这就是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 :(得分:2)
您的获取请求将被写入以返回实体名称为&#34; Favoritos&#34;的所有实例。该搜索结果显示您已创建了两个。
只能看到一行的解释可能是您的MOC尚未保存。但是,在Core Data的SQLite文件中进行垃圾箱潜水是令人沮丧的一个因素。使用记录的API。
您应该添加对fetchFavoritos()
的调用作为save()函数的第一行,以便在创建Favoritos实例之前查看其中的内容。