致命错误:值无法从Swifttypes桥接到Objective-Ctypes

我想使用新的NSBatchUpdateRequest写入一些信息到Core Data ,并不能找出为什么我得到这个错误。 有人能解释这里发生了什么吗? 这听起来像我有麻烦将Swift转换为Objective-Ctypes值?

 fatal error: value failed to bridge from Swift type to Objective-C type 

这里是我的代码块,错误发生在:

 func updateUser(user: User) { var batchRequest = NSBatchUpdateRequest(entityName: "User") if doesUserExist(user.userId) { batchRequest.predicate = NSPredicate(format: "userId == %@", user.userId) } batchRequest.propertiesToUpdate = [ "userId" : user.userId, "username" : user.username, "email" : user.email, "fullName" : user.fullName, "gender" : user.gender, "birthdate" : user.birthdate, "zipCode" : user.zipCode, "aboutMe" : user.aboutMe, "iAm" : user.iAm, "iLike" : user.iLike, "favoriteWeapon" : user.favoriteWeapon, "dateCreated" : user.dateCreated, "lookingFor" : user.lookingFor, "minAge" : user.minAge, "maxAge" : user.maxAge, "distance" : user.distance, "gameOwned" : user.gameOwned, "gameSetting" : user.gameSetting, "allowedList" : user.allowedList, "blockedList" : user.blockedList, "avatarType" : user.avatarType ] batchRequest.resultType = .UpdatedObjectsCountResultType var error : NSError? var results = self.managedObjectContext!.executeRequest(batchRequest, error: &error) as NSBatchUpdateResult if error == nil { println("Updated User: \(user.username) \(results.result)") } else { println("Update User Error: \(error?.localizedDescription)") } } 

我得到错误的代码行是:

 var results = self.managedObjectContext!.executeRequest(batchRequest, error: &error) as NSBatchUpdateResult 

用户对象

 class User: NSManagedObject { @NSManaged var aboutMe: String @NSManaged var avatarType: String @NSManaged var birthdate: NSDate @NSManaged var cityState: String @NSManaged var dateCreated: NSDate @NSManaged var distance: NSNumber @NSManaged var email: String @NSManaged var favoriteWeapon: String @NSManaged var fullName: String @NSManaged var gameOwned: AnyObject @NSManaged var gameSetting: AnyObject @NSManaged var gender: String @NSManaged var iAm: String @NSManaged var iLike: String @NSManaged var lastMatch: NSDate @NSManaged var lookingFor: String @NSManaged var maxAge: NSNumber @NSManaged var minAge: NSNumber @NSManaged var pictureUrl: String @NSManaged var userId: String @NSManaged var username: String @NSManaged var zipCode: String @NSManaged var allowedList: String @NSManaged var blockedList: String 

}

很可能你的用户对象具有在目标c中不可用的快速特定function,如枚举,元组,generics等。

这可能是编译器因为你的快速优化而引起的一个问题。 一个解决scheme,为我工作是

  1. 点击左侧栏中的目标。
  2. 点击Build Settings
  3. search“优化级别”
  4. 根据需要更改值(我们必须将优化级别设置为-Onone来修复该错误)

来源: 如何更改Swift的Xcode 6中的优化级别

您应该将包含数据的所有variables转换为string数据types。 也许你的“AnyObject”或“Date”数据types正在产生问题。