स्विफ्ट: 'Int16' प्रकार के मूल्य को अपेक्षित तर्क प्रकार 'AnyObject' में परिवर्तित नहीं किया जा सकता है? [डुप्लिकेट] - आईओएस, तेज़

मुझे निम्नलिखित त्रुटि मिलती है:

अपेक्षित तर्क प्रकार "IntObject" के प्रकार "Int16" के मान को परिवर्तित नहीं कर सकता?

रेखा पर

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)")
}
}

उत्तर:

जवाब के लिए 3 № 1

जैसा कि त्रुटि कहती है, Int16 स्विफ्ट में एक वस्तु नहीं है, और इसलिए इसका उपयोग नहीं किया जा सकता है setValue(forKey:), जो एक वस्तु की अपेक्षा करता है। इसे एक में लपेटने का प्रयास करें NSNumber, इस तरह:

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

जवाब के लिए 2 № 2

If you are going to use an Int16, you cannot hand ऑब्जेक्टिव-सी को ऑब्जेक्ट के रूप में सीधे ऑब्जेक्ट के रूप में ब्रिज किए गए नंबर प्रकारों के साथ आप जिस तरह से कर सकते हैं। स्विफ्ट नंबर उद्देश्य-सी ऑब्जेक्ट्स नहीं हैं, और स्विफ्ट आपकी सहायता करने के लिए नहीं जा रहा है जैसे कि Int और Double जैसी सरल संख्याओं को छोड़कर। Int16 के लिए, आप अपने आप को एनएसएनंबर के रूप में लपेटना चाहिए।


संबंधित सवाल
सबसे लोकप्रिय