2016-06-25 4 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) 
     } 

} 

는 정말이 일이 너무 기본적인 것 같지만 인터넷 검색을 많이 내가 그것을 알아낼 도움이되지 않은 당신의 도움을 주셔서 감사합니다.

답변

0

되는 listItem항목의 배열입니다, 그래서 당신은이 목록에 한 가지의 이름을 변경하려는 경우 당신은 내가 문제 코드 생각

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

감사합니다. – Christie

0

넣어 공간을 콜론 주위에. 구문을 내가 틀리지 않는 경우.

0

처럼, 인덱스 네가 원하는 변화를 지정해야합니다 여기에 기본적으로

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

, 항목 유형이 NSManagedObject, 그래서 listItem 더 멤버 [name]이 없습니다. Item Object로 캐스트해야합니다.

관련 문제