我正在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 :(得分:0)
在冒号周围放置空格。语法如果我没有弄错的话。
答案 1 :(得分:0)
listItem 是一个 Item 的数组,所以如果你想在这个列表中更改一个东西的名字,你应该指定你想要改变的索引,比如
listItem[0].name = "text"
答案 2 :(得分:0)
我认为问题代码在这里:
let item = NSManagedObject(entity: entity!, insertIntoManagedObjectContext: managedContext) as! Item
默认情况下,项目类型为NSManagedObject
,因此listItem
没有成员[name]
。您需要将其转换为Item Object。