2016-08-25 6 views
0

CoreDataデータでTableViewを作成しようとすると、このエラーが発生し、修正方法がわかりません。 CoreDataを別のクラスに保存しました。私もTableViewの権利を作成したかどうかはわかりません。CoreData/TableView - 'subscript'のあいまいな使用

let eventItem = eventItems! [indexPath.row] 

問題は、あなたがAnyObject?としてeventItemsを宣言したことで、AnyObjectは添字を受け付けない:あなたがこれを行うには、後に続いて

var eventItems: AnyObject? 

class listEvents: UITableViewController { 

    var logTableView = UITableView(frame: CGRectZero, style: .Plain) 
    let managedObjectContext = (UIApplication.sharedApplication().delegate as! AppDelegate).managedObjectContext 
    var eventItems: AnyObject? 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     var viewFrame = self.view.frame 

     viewFrame.origin.y += 20 

     viewFrame.size.height -= 20 


     logTableView.frame = viewFrame 

     self.view.addSubview(logTableView) 

     logTableView.registerClass(UITableViewCell.classForCoder(), forCellReuseIdentifier: "EventCell") 


     logTableView.dataSource = self 

     fetchLog() 

    } 

    override func viewDidAppear(animated: Bool) { 


    } 

    override func didReceiveMemoryWarning() { 
     super.didReceiveMemoryWarning() 

    } 

    override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 
     return eventItems!.count 

    } 

    override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 
     let cell = tableView.dequeueReusableCellWithIdentifier("EventCell") as! UITableViewCell! 

     let eventItem = eventItems! [indexPath.row] <-- Error here 

     cell.textLabel?.text = eventItem.name 
     return cell 
    } 

    override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) { 
     let eventItem = eventItems! [indexPath.row] <-- Error here 
     print(eventItem.id) 
    } 


    func fetchLog() { 
     let fetchRequest = NSFetchRequest(entityName: "Event") 


     let sortDescriptor = NSSortDescriptor(key: "name", ascending: true) 


     fetchRequest.sortDescriptors = [sortDescriptor] 

     do{ 
     if let fetchResults = try managedObjectContext.executeFetchRequest(fetchRequest) as? [Event] { 
      eventItems = fetchResults 
     } 
     }catch{ 
     print("ERROR") 
     } 
    } 
} 
+0

「このエラー」とはどういう意味ですか?あなたはどんなエラーを出していますか? – Poorkenny

答えて

1

あなたはこの宣言を持っています。それは文字通りどんなオブジェクトでもかまいません。すべてのクラスが下付き文字で動作するわけではないので、Swiftは何をすべきか分かりません。

フェッチ要求の結果としてeventItemsを割り当てているため、NSArray?または[Event]?のいずれかとして宣言する必要があります。また、eventItemsの後にその!を使用すると、重大なクラッシュの危険があります。誤ってゼロ値を持たないことが絶対に確実でない限り、!を使用しないでください。

関連する問題