ios - 如何将 executeFetchRequest 结果附加到数组结构中

标签 ios core-data swift

我是一名 iOS 开发新手。我正在尝试将 executeFetchRequest 的结果导入到我创建的结构中,以便稍后查看到表中。我在 func getTasks() 中得到“数组索引超出范围”,我很确定我应该追加它,但不确定如何追加。

我确信总的来说有更好的设置方法。现在我只是想让事情正常进行。但其他建议将不胜感激。

import UIKit
import CoreData

var taskMgr: TaskManager = TaskManager()

struct task {
    var name = "Un-Named"
    var desc = "Un-Described"
}

class TaskManager: NSObject {

    var tasks = task[]()

    init() {
        super.init()
        self.getTasks()
    }

    func addTask(name: String, desc: String) {

        tasks.append(task(name: name, desc: desc))

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

        let ent = NSEntityDescription.entityForName("Tasks", inManagedObjectContext: context)

        var newTask = Tasks(entity: ent, insertIntoManagedObjectContext: context)
        newTask.name = name
        newTask.desc = desc

        println("Object saved")

        context.save(nil)
    }

    func getTasks() {
        let appDel:AppDelegate = UIApplication.sharedApplication().delegate as AppDelegate
        let context:NSManagedObjectContext = appDel.managedObjectContext

        var request = NSFetchRequest(entityName: "Tasks")
        request.returnsObjectsAsFaults = false;

        var results:NSArray = context.executeFetchRequest(request, error: nil)

        if (results.count > 0) {
            self.tasks = task[]()
            var i = 0
            for element in results {
                tasks[i].name = element.name  // fatal error: Array index out of range
                tasks[i].desc = element.desc
                i++
            }
        }
    }

}

class  Tasks: NSManagedObject {
    @NSManaged var name: String
    @NSManaged var desc: String
}

最佳答案

您不能使用下标将项目添加到数组中——您需要调用 append() 或使用 += 运算符。试试这个:

self.tasks = task[]()
for element in results {
    tasks += task(name: element.name, desc: element.desc)
}

关于ios - 如何将 executeFetchRequest 结果附加到数组结构中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24716381/

相关文章:

ios - 我可以复制一个 .db 文件到我的项目的根目录,然后插入或删除它的数据吗?

ios - 如何在 Swift 中为协议(protocol)编写单元测试

ios - iPhone Core Data 如何将日期部分添加到带有时间戳的事件中?

Swift 数组下标扩展 "Range<T> is not convertible to Int"

ios - 我如何在 iOS Swift 中通过聚类解析自定义标记图标

objective-c - 可以将 Obj-C AXObserverCallback 转换为 Swift 吗?

python - 登录成功的正确 Tornado 响应是什么?

ios - 在 Swift 中使用 isKindOf

具有用户位置和适当比例/跨度的 iOS init MKMapView

ios - 从 CoreData 中删除对象(错误)