[英]The array of String property in a managed object constantly nil
首先,我將文本字段中的內容提取到字典中:
var dict: [String: String] = [:]
for metricPair in metricStackView.arrangedSubviews {
if metricPair.subviews[0] is UITextField {
let unitTextField = metricPair.subviews[0] as! UITextField
let valueTextField = metricPair.subviews[1] as! UITextField
if let textContent = unitTextField.text, let valueTextContent = valueTextField.text {
let trimmedKey = textContent.trimmingCharacters(in: .whitespacesAndNewlines)
let trimmedValue = valueTextContent.trimmingCharacters(in: .whitespacesAndNewlines)
dict.updateValue(trimmedValue, forKey: trimmedKey)
}
}
}
我將它保存到核心數據:
let goal = Goal(context: self.context)
goal.date = Date()
for item in dict {
goal.metrics?.append(item.key)
}
goal.progress.insert(progress)
我的托管 object 如下所示:
extension Goal {
@nonobjc public class func createFetchRequest() -> NSFetchRequest<Goal> {
return NSFetchRequest<Goal>(entityName: "Goal")
}
@NSManaged public var date: Date
@NSManaged public var metrics: [String]?
@NSManaged public var progress: Set<Progress>
}
甚至在保存上下文之前,我一直為[String]
類型的metrics
屬性獲得nil
。 當我登錄item.key
時:
for item in dict {
goal.metrics?.append(item.key)
}
內容正確顯示。
據我從上面的代碼可以看出, metrics
數組沒有被初始化。
嘗試替換此行:
goal.metrics?.append(item.key)
使用這些行:
if case nil = goal.metrics?.append(item.key) {
goal.metrics = [item.key]
}
或僅使用以下幾行:
if goal.metrics == nil {
goal.metrics = []
}
goal.metrics?.append(item.key)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.