Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 获取单个核心数据元素并合并到单个阵列中_Arrays_Swift_Core Data_Nsmanagedobjectcontext - Fatal编程技术网

Arrays 获取单个核心数据元素并合并到单个阵列中

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

下面我的swift代码将3个名称保存到核心数据中。然后在func笑话中,它获取数据并将其转换为数组。问题在于调试区域,而不是列出3个名称,如[kim,Hailey,jessica]。它在每一行列出它们,这样它们就不会被分组到一个数组中。所以我希望所有3个名字都像[name1,name2,name3]

    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)