Ios Swift:无法转换类型为';Int16&x27;到预期的参数类型';任何对象?';

Ios Swift:无法转换类型为';Int16&x27;到预期的参数类型';任何对象?';,ios,swift,Ios,Swift,我得到以下错误: 无法将“Int16”类型的值转换为预期的参数类型“AnyObject” 在线 person.setValue(Time, forKey: "Time") 当我运行此应用程序时。函数的框架取自并从String更改为Int16,以及实体和属性名称 var people = [NSManagedObject]() func saveName(Time: Int16) { //1 let appDelegate = UIApplication.

我得到以下错误:

无法将“Int16”类型的值转换为预期的参数类型“AnyObject”

在线

person.setValue(Time, forKey: "Time")
当我运行此应用程序时。函数的框架取自并从
String
更改为
Int16
,以及实体和属性名称

var people = [NSManagedObject]()

   func saveName(Time: Int16) {
    //1
    let appDelegate =
        UIApplication.sharedApplication().delegate as! AppDelegate

    let managedContext = appDelegate.managedObjectContext

    //2
    let entity =  NSEntityDescription.entityForName("Person",
                                                    inManagedObjectContext:managedContext)

    let person = NSManagedObject(entity: entity!,
                                 insertIntoManagedObjectContext: managedContext)

    //3
    person.setValue(Time, forKey: "Time")

    //4
    do {
        try managedContext.save()
        //5
        people.append(person)
    } catch let error as NSError  {
        print("Could not save \(error), \(error.userInfo)")
    }
}

如果要使用Int16,就不能像使用Int这样的桥接数字类型那样,将其作为对象直接交给Objective-C。Swift数字不是Objective-C对象,Swift除了使用Int和Double这样的简单数字外,对您没有任何帮助。对于Int16,您必须自己将其包装为NSNumber。

如果您要使用Int16,您不能像使用Int等桥接数字类型那样将其作为对象直接交给Objective-C。Swift数字不是Objective-C对象,Swift除了使用Int和Double等简单数字外,不会对您有所帮助。对于Int16,您必须自己将其包装为NSNumber。

正如错误所述,
Int16
在Swift中不是对象,因此不能在需要对象的
setValue(forKey:)
中使用。尝试将其包装在
NSNumber
中,如下所示:

person.setValue(NSNumber(short: Time), forKey: "Time")

正如错误所说,
Int16
不是Swift中的对象,因此不能在需要对象的
setValue(forKey:)
中使用。尝试将其包装在
NSNumber
中,如下所示:

person.setValue(NSNumber(short: Time), forKey: "Time")

这解决了问题,谢谢!这解决了问题,谢谢!啊,我现在明白了,我是新来的,对不起。谢谢你的回复。我现在才开始编程。对不起。感谢您的回复,与其调用
setValue
,不如为您的实体定义托管对象子类,然后访问它们的属性。这不太容易出错。与其调用
setValue
,不如为实体定义托管对象子类,然后访问它们的属性。这就不那么容易出错。