【发布时间】:2014-11-19 08:05:19
【问题描述】:
我正在尝试使用新的NSBatchUpdateRequest 向Core Data 写入一些信息,但不知道为什么会出现此错误。有人可以解释这里发生了什么吗?听起来我在将 Swift 转换为 Objective-C 类型值时遇到了问题?
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
}
【问题讨论】:
-
你能显示你的用户对象定义吗?
-
@MikeTaverne 添加了用户对象定义。