gpt4 book ai didi

ios - 传递和检索核心数据 - Swift 中的 NSArray 元素问题

转载 作者:行者123 更新时间:2023-11-30 13:59:00 25 4
gpt4 key购买 nike

我在 Xcode 7 中编写的 Swift (2.0) 应用程序遇到问题。基本上,我想将字符串保存到 Core Data,然后检索它。听起来很简单,但我遇到了一些问题。该应用程序是一个模拟炸弹,因此我将其“引爆”的时间作为字符串写入核心数据。然后我想检索该字符串并用它做一些事情。

这是我在核心数据中保存字符串的代码:

let dteTime:NSDate = NSDate(timeIntervalSinceNow: 60*60*12) //Generate time 12 hours from now
let formatter:NSDateFormatter = NSDateFormatter()
formatter.timeStyle = NSDateFormatterStyle.LongStyle
formatter.dateStyle = NSDateFormatterStyle.LongStyle
let strStringValue:String = formatter.stringFromDate(dteTime)
print(strStringValue) //Prints 'October 20, 2015 at 5:53:18 AM GMT+11' as expected

let newTime = NSEntityDescription.insertNewObjectForEntityForName("Time", inManagedObjectContext: context)
newTime.setValue(strStringValue, forKey: "dateTimeExplode")

do {
try context.save()
} catch _ {
print("Error saving core data")
}

我已经确认计算从现在起 12 小时后的时间是有效的,并且它已正确格式化为字符串。

下面是从核心数据检索条目的代码:

let request = NSFetchRequest(entityName: "Time")
request.returnsObjectsAsFaults = false

var results:[TimeCoreData] = [TimeCoreData]()
results = (try! context.executeFetchRequest(request)) as! [TimeCoreData]

if results.count > 0 { // Data retrieved
var dteTimeExplode:String = String()
for res in results { //CRASHES

dteTimeExplode = res.dteTimeDateExplode
}
}

请原谅我在这里造成的任何困惑,但是dteTimeExplode实际上是一个字符串,而不是日期。它本来是一个 NSDate() 但我遇到了问题,所以为了暂时简化它,我将其更改为字符串。整个代码中可能存在一些类似的情况。

如您所见,我正在将核心数据检索到自定义对象中,该对象的定义如下。我已经复制了整个 swift 文件。

import UIKit
import CoreData
import Foundation

@objc(TimeCoreData)

class TimeCoreData: NSManagedObject {
@NSManaged var dteTimeDateExplode:String
}

目前,应用程序在到达 for res in results { 时崩溃。 (在上面的第二个代码块中标记)带有错误消息

fatal error: NSArray element failed to match the Swift Array Element type

我知道收到此错误消息是因为 Swift 试图用另一种类型的数据创建一种类型的数组,但它无法这样做,但我不明白为什么会出现这种情况。我正在将一个字符串保存到核心数据中,所以我应该检索一个字符串。我的自定义对象 ( TimeCoreData ) 只有一个变量,且为字符串类型。

下面是我的核心数据模型的屏幕截图: Core Data Model

我在这里做错了什么?

最佳答案

您似乎没有告诉模型 Time 实体应该使用 TimeCoreData 类。我建议您采取最简单的路线和重构,将 NSManagedObject 子类名称更改为 Time

关于ios - 传递和检索核心数据 - Swift 中的 NSArray 元素问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33208502/

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