2014-07-12 124 views
1

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

我确定有一个更好的方法来设置这一般。现在我只是想让事情发挥作用。但其他建议,将不胜感激。

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 
} 
+0

在Swift中(和Objective-C一样),类型名应该是标题大小写 - 如果你把你的结构从'task'重命名为'Task',你的代码会更容易理解。 –

回答

1

不能使用下标将项目添加到一个数组 - 你需要调用append()或使用+=操盘手。试试这个吧:

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

很感谢您对我的新手耐心。我会告诉你。 – jackreichert

+0

它的工作!先生,你是个好人! – jackreichert

相关问题