Arrays 获取单个核心数据元素并合并到单个阵列中
下面我的swift代码将3个名称保存到核心数据中。然后在func笑话中,它获取数据并将其转换为数组。问题在于调试区域,而不是列出3个名称,如[kim,Hailey,jessica]。它在每一行列出它们,这样它们就不会被分组到一个数组中。所以我希望所有3个名字都像[name1,name2,name3]Arrays 获取单个核心数据元素并合并到单个阵列中,arrays,swift,core-data,nsmanagedobjectcontext,Arrays,Swift,Core Data,Nsmanagedobjectcontext,下面我的swift代码将3个名称保存到核心数据中。然后在func笑话中,它获取数据并将其转换为数组。问题在于调试区域,而不是列出3个名称,如[kim,Hailey,jessica]。它在每一行列出它们,这样它们就不会被分组到一个数组中。所以我希望所有3个名字都像[name1,name2,name3] import UIKit import CoreData class ViewController: UIViewController,UITextFieldDelegate { @IBO
import UIKit
import CoreData
class ViewController: UIViewController,UITextFieldDelegate {
@IBOutlet var labelName : UILabel!
@IBOutlet var enterT : UITextField!
let appDelegate = UIApplication.shared.delegate as! AppDelegate //Singlton instance
var context:NSManagedObjectContext!
override func viewDidLoad() {
super.viewDidLoad()
openDatabse()
joke()
}
func joke() {
let fetchRequest = NSFetchRequest<NSFetchRequestResult>(entityName: "Users")
do {
let results = try context.fetch(fetchRequest)
let Locations = results as! [Users]
for location in Locations {
print("Array: ",location.username)
}
} catch let error as NSError {
print("Could not fetch \(error) ")
}
}
func openDatabse()
{
context = appDelegate.persistentContainer.viewContext
let entity = NSEntityDescription.entity(forEntityName: "Users", in: context)
let newUser = NSManagedObject(entity: entity!, insertInto: context)
let newUser2 = NSManagedObject(entity: entity!, insertInto: context)
let newUser3 = NSManagedObject(entity: entity!, insertInto: context)
saveData(UserDBObj: newUser, UserDBObj2: newUser2, UserDBObj3: newUser3)
}
func saveData(UserDBObj:NSManagedObject,UserDBObj2:NSManagedObject,UserDBObj3:NSManagedObject)
{
UserDBObj.setValue("kim kardashian", forKey: "username")
UserDBObj2.setValue("jessica biel", forKey: "username")
UserDBObj3.setValue("Hailey Rienhart", forKey: "username")
print("Storing Data..")
do {
try context.save()
} catch {
print("Storing data Failed")
}
fetchData()
}
func fetchData()
{
print("Fetching Data..")
let request = NSFetchRequest<NSFetchRequestResult>(entityName: "Users")
request.returnsObjectsAsFaults = false
do {
let result = try context.fetch(request)
for data in result as! [NSManagedObject] {
let userName = data.value(forKey: "username") as! String
print("User Name is : "+userName)
}
} catch {
print("Fetching data Failed")
}
}}
导入UIKit
导入CoreData
类ViewController:UIViewController、UIExtFieldDelegate{
@IBVAR标签名称:UILabel!
@IBOutlet var enterT:UITextField!
将appDelegate=UIApplication.shared.delegate设为!appDelegate//Singlton实例
变量上下文:NSManagedObjectContext!
重写func viewDidLoad(){
super.viewDidLoad()
OpenDatabase()
笑话
}
func笑话{
let fetchRequest=NSFetchRequest(entityName:“用户”)
做{
let results=try context.fetch(fetchRequest)
让位置=结果为![用户]
对于位置中的位置{
打印(“数组:”,位置.用户名)
}
}将let错误捕获为NSError{
打印(“无法获取\(错误)”)
}
}
func opendatabase()
{
context=appDelegate.persistentContainer.viewContext
让entity=NSEntityDescription.entity(在:上下文中,名为“用户”)
让newUser=NSManagedObject(实体:实体!,插入到:上下文)
让newUser2=NSManagedObject(实体:实体!插入到:上下文)
让newUser3=NSManagedObject(实体:实体!插入到:上下文)
保存数据(UserDBObj:newUser、UserDBObj2:newUser2、UserDBObj3:newUser3)
}
func saveData(UserDBObj:NSManagedObject、UserDBObj2:NSManagedObject、UserDBObj3:NSManagedObject)
{
UserDBObj.setValue(“kim kardashian”,forKey:“username”)
setValue(“jessica biel”,forKey:“username”)
UserDBObj3.setValue(“Hailey Rienhart”,forKey:“username”)
打印(“存储数据…”)
做{
尝试context.save()
}抓住{
打印(“存储数据失败”)
}
fetchData()
}
func fetchData()
{
打印(“获取数据…”)
let request=NSFetchRequest(entityName:“用户”)
request.returnsObjectsAsFaults=false
做{
let result=try context.fetch(请求)
对于结果中的数据![NSManagedObject]{
让userName=data.value(forKey:“userName”)作为!字符串
打印(“用户名为:”+用户名)
}
}抓住{
打印(“提取数据失败”)
}
}}
从CoreData
获取数据时,将托管对象
转换为模型类数组
附加代码供您参考
do{
if let userData = try managedContext?.fetch(fetchRequest) as? [Users]{
// use this userData for your result and update ui accordingly
}
}catch let error as NSError {
print("Could not fetch. \(error), \(error.userInfo)")
}
获取数据后,获取一个字符串数组并将您的用户名附加到此数组中。参考请参见下面的代码
var nameArray = [String]()
for location in Locations {
print("Array: ",location.username)
nameArray.append(location.username)
}
首先,使用特定的获取请求来获取
用户
记录
如果需要字符串数组([String]
)将记录映射到它们的用户名
func joke() {
let fetchRequest = NSFetchRequest<Users>(entityName: "Users")
do {
let result = try context.fetch(fetchRequest)
let nameArray = result.map{$0.username}
print(nameArray)
} catch {
print("Could not fetch \(error) ")
}
}
数据的打印方式如何相关?它们位于变量result
的数组中,如果需要字符串数组,可以使用map
let nameString = result.map{$0.username}.joined(separator: ", ")
print(nameString)