2016-06-25 15 views
-1

私はSwiftで初めてのiOSアプリケーションを作成しています。基本的なことに固執しています。私は、カスタムクラスを作成し、変数を設定したいと思います。私はメンバー[名前]を持っていない[項目]タイプのエラー」値を見続けるカスタムクラスで変数を設定できないのはなぜですか?

これは私のカスタムクラスです。

import UIKit 
import Foundation 
import CoreData 

class Item:NSManagedObject { 

    var name:String? 

    convenience init(name: String?, insertIntoManagedObjectContext context: NSManagedObjectContext!) { 
     let entity = NSEntityDescription.entityForName("ItemEntity", inManagedObjectContext: context)! 
     self.init(entity: entity, insertIntoManagedObjectContext: context) 
    } 
} 

そして、これはそれを使用しようとする私のコードです:

func editItem(id:Int, category:String, brand:String, name:String, colour:String, purchasePrice:String, purchaseDate:String, expiryDate:String) -> Int { 

    // vars 
    let appDelegate = UIApplication.sharedApplication().delegate as! AppDelegate 
    let managedContext = appDelegate.managedObjectContext 
    let entity = NSEntityDescription.entityForName("ItemEntity", inManagedObjectContext: managedContext) 
    let item = NSManagedObject(entity: entity!, insertIntoManagedObjectContext: managedContext) 
    var listItem = [Item]() 
    let fetchRequest = NSFetchRequest(entityName: "ItemEntity") 

    // fetch the item from the core data with the same ID 
    do{ 
     let predicate = NSPredicate(format: "id == %@", String(id)) 
     fetchRequest.predicate = predicate 
     fetchRequest.fetchLimit = 1 
     let results = try managedContext.executeFetchRequest(fetchRequest) 
     listItem = results as! [Item] 
    } 
    catch { 
     let fetchError = error as NSError 
     print (fetchError) 
    } 

    // edit the item 
    listItem.name = "text" // !! THIS IS THE LINE WHICH DISPLAYS THE ERROR 

    // save the item 
     do { 
      try managedContext.save() 
     } 
     catch { 
      let saveError = error as NSError 
      print (saveError) 
     } 

} 

は本当にこの1つはとても基本的なようだが、グーグルの多くは、私はそれを把握する助けていません。コロンの周り

答えて

0

listItemの項目の配列ですので、あなたがこのリストに一つの名前を変更したい場合は、私は問題のコードだと思い

listItem[0].name = "text" 
+0

ありがとうございました! – Christie

0

入れスペース、あなたの助けに感謝します。構文私は間違っていない場合。

0

のように、インデックスあなたたい変更を指定する必要がありますここにある:デフォルトで

let item = NSManagedObject(entity: entity!, insertIntoManagedObjectContext: managedContext) as! Item 

、項目タイプはNSManagedObjectので、listItemにはメンバー[name]を持っていません。それをItemオブジェクトにキャストする必要があります。

関連する問題