ios – executeFetchRequest抛出致命错误:NSArray元素无法匹配Swift Array Element类型

ios – executeFetchRequest抛出致命错误:NSArray元素无法匹配Swift Array Element类型,第1张

概述我正在用CoreData测试 swift,我创建了以下代码: import UIKitimport CoreDataclass Contact: NSManagedObject { @NSManaged var name: String @NSManaged var email: String class func execute(){ let a 我正在用CoreData测试 swift,我创建了以下代码:
import UIKitimport CoreDataclass Contact: NSManagedobject {    @NSManaged var name: String    @NSManaged var email: String    class func execute(){        let appDel:AppDelegate = (UIApplication.sharedApplication().delegate as AppDelegate)        let context:NSManagedobjectContext = appDel.managedobjectContext!        let entityDescripition = NSEntityDescription.entityForname("Contact",inManagedobjectContext: context)        let contact = Contact(entity: entityDescripition!,insertIntoManagedobjectContext: context)        contact.name = "john Apleesee"        contact.email = "john@apple.com"        context.save(nil)        let fetch:NSFetchRequest = NSFetchRequest(entityname: "Contact")        var result = context.executeFetchRequest(fetch,error: nil) as [Contact]        let firstContact = result[0] as Contact  //  <<-- error !        println("\(firstContact.name)")        println("\(firstContact.email)")    }}

当我跑:

Contact.execute()

那么编译器会抛出这个错误:

Fatal error: NSArray element Failed to match the Swift Array Element type

当我尝试从数组中获取值时:

let firstContact = result[0] as Contact

我猜问题在executeFetchRequest.在Objective-c上,executeFetchRequest的返回类型是NSArray.现在在Swift上,返回类型是[AnyObject]?

我试图投掷[AnyObject]?结果NSArray,但Xcode说:

Cannot convert the Expression's type '[AnyObject]?' to type 'NSArray'

我做错了什么?

我在用着:
Xcode 6.0(6A313)GM和
OSX 10.9.4

更新:
———–

如果我将executeFetchRequest结果作为可选数组,并使用[NSManagedobject]而不是[Contact],它可以工作.

if let result: [NSManagedobject]? = context.executeFetchRequest(fetch,error: nil) as? [NSManagedobject] {        let firstContact: NSManagedobject = result![0]        let name = firstContact.valueForKey("name") as String        let email = firstContact.valueForKey("email") as String        println("\(name)")        println("\(email)")    }

UPDATE2:
———–

当使用您的NSManagedobject类未实现实体实例时,会出现这种问题.有几个不同的原因为什么会这样,所有这些都集中在“核心数据找不到在该数据模型中的类行上为该实体指定的类”.

可能性之中:
– 您为Swift类指定了错误的包
– 你忘了指定课程
– 你拼错了名字

在我的情况下,我忘了在她的答案中将班级指定为POB表演.

解决方法 我能够在控制台中重现错误信息.您收到此消息,因为您没有正确设置您的实体类名称在核心数据模型编辑器(见下图).

一旦完成,您将能够使用您的原始代码与Contact子类.您可以了解有关Core Data和命名空间here的更多信息.

总结

以上是内存溢出为你收集整理的ios – executeFetchRequest抛出致命错误:NSArray元素无法匹配Swift Array Element类型全部内容,希望文章能够帮你解决ios – executeFetchRequest抛出致命错误:NSArray元素无法匹配Swift Array Element类型所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1113127.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-29
下一篇 2022-05-29

发表评论

登录后才能评论

评论列表(0条)

保存