致命错误:值无法从Swift类型桥接到Objective-C类型 [英] fatal error: value failed to bridge from Swift type to a Objective-C type
问题描述
我想使用新的 NSBatchUpdateRequest
向核心数据
写一些信息,我得到这个错误。有人可以解释这里发生了什么吗?听起来像我无法将Swift转换为Objective-C类型值?
致命错误:值无法从Swift类型为Objective-C类型
这是我发生错误的代码块: / p>
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(更新用户错误:\(错误?.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
}
您应该将所有包含数据的变量转换为String数据类型。也许你的AnyObject或Date数据类型正在创建问题。
I am trying to write some info to Core Data
using the new NSBatchUpdateRequest
and can't figure out why I am getting this error. Can someone explain what is going on here? It sounds like I am having trouble converting a Swift to Objective-C type value?
fatal error: value failed to bridge from Swift type to Objective-C type
Here is my block of code that the error is taking place in:
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)")
}
}
The line of code that I am getting the error on is:
var results = self.managedObjectContext!.executeRequest(batchRequest, error: &error) as NSBatchUpdateResult
User Object
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
}
You should convert all your variables containing data to String data type. Maybe your 'AnyObject' or 'Date' datatypes are creating the problem.
这篇关于致命错误:值无法从Swift类型桥接到Objective-C类型的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!