gpt4 book ai didi

arrays - UITextField 没有获取数组的文本值

转载 作者:可可西里 更新时间:2023-11-01 02:19:59 25 4
gpt4 key购买 nike

我正在使用核心数据将用户输入保存在一个数组中。在此之前,代码可以完美运行,问题是获取该数组的某些元素并将 UITextField 作为文本放入的时间。代码没有错误,只是没有正常工作。

@IBOutlet weak var quoteTextField: UILabel!
@IBOutlet weak var addQuote: UIButton!
@IBOutlet weak var deleteQuote: UIButton!

var bookArray: Array<AnyObject> = []

override func viewDidLoad() {
super.viewDidLoad()

//Get the info on the CoreData
var appDel: AppDelegate = (UIApplication.sharedApplication().delegate as! AppDelegate)
var context:NSManagedObjectContext = appDel.managedObjectContext!
var request = NSFetchRequest(entityName: "BookArray")
request.returnsObjectsAsFaults = false
bookArray = context.executeFetchRequest(request, error: nil)!

if (bookArray.count != 0){
var randomIndex = Int(arc4random_uniform(UInt32(bookArray.count)))
quoteTextField.text = bookArray[randomIndex] as? String
}
}

DataModel

这是我保存用户输入的地方,它位于另一个 View Controller 中:

 @IBAction func saveOnData(sender: AnyObject) {

var quoteInputText = quoteInput.text

var appDel: AppDelegate = (UIApplication.sharedApplication().delegate as! AppDelegate)
var context:NSManagedObjectContext = appDel.managedObjectContext!

var newQuote = NSEntityDescription.insertNewObjectForEntityForName("BookArray", inManagedObjectContext: context) as! NSManagedObject

newQuote.setValue(quoteInputText, forKey: "myFirstBook")

context.save(nil)

println(newQuote)

}

最佳答案

逐行进行。

首先你创建一个获取请求:

var appDel: AppDelegate = (UIApplication.sharedApplication().delegate as! AppDelegate)
var context:NSManagedObjectContext = appDel.managedObjectContext!
var request = NSFetchRequest(entityName: "BookArray")
request.returnsObjectsAsFaults = false

然后将获取请求的结果分配给名为 bookArray 的数组:

bookArray = context.executeFetchRequest(request, error: nil)!

函数 executeFetchRequest 返回 [AnyObject]。在您的情况下,它将返回 BookArray 实体 [BookArray] 的数组。

所以,当你打电话时:

bookArray[randomIndex]

你得到一个 BookArray 的实例。当然,您对 String 的条件向下转换总是会失败;)

这是你必须做的:

1) 将以下类添加到您的项目中:

import Foundation
import CoreData

@objc(BookArray)
class BookArray:NSManagedObject {
@NSManaged var myFirstBook:String
}

然后打开您的 Core Data 模型,单击 BookArray 实体并确保在属性检查器中将其类设置为 BookArray:

enter image description here

2) 通过这样的实现,您可以将保存函数重写为:

 @IBAction func saveOnData(sender: AnyObject) {

var quoteInputText = quoteInput.text

var appDel: AppDelegate = (UIApplication.sharedApplication().delegate as! AppDelegate)
var context:NSManagedObjectContext = appDel.managedObjectContext!

var newQuote = NSEntityDescription.insertNewObjectForEntityForName("BookArray", inManagedObjectContext: context) as! BookArray

newQuote.myFirstBook = quoteInputText

context.save(nil)

println(newQuote)

}

3) 将 viewDidLoad 函数的展开部分更改为:

if (bookArray.count != 0){
var randomIndex = Int(arc4random_uniform(UInt32(bookArray.count)))
let bookArrayInstance = bookArray[randomIndex] as! BookArray
quoteTextField.text = bookArrayInstance.myFirstBook
}
}

关于arrays - UITextField 没有获取数组的文本值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31416615/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com