2014-11-19 1 views
0

Core Data에 정보를 쓰려고하는데 NSBatchUpdateRequest을 사용하고 있는데 왜이 오류가 발생하는지 알 수 없습니다. 누군가 여기서 일어나는 일을 설명 할 수 있습니까? Swift를 Objective-C 유형 값으로 변환하는 데 문제가있는 것 같습니다. 여기 치명적인 오류 : 값을 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 

}

+0

사용자 개체 정의를 표시 할 수 있습니까? –

+0

@MikeTaverne은 사용자 개체 정의를 추가했습니다. –

답변

0

대부분의 경우 사용자 개체 이것은 당신의 신속한하여 컴파일러 인 원인에서 문제가 될 수

0

등을 열거, 튜플, 제네릭과 같은 목적 C에서 사용할 수없는 신속 특정 기능을 가지고 있습니다 최적화. 나를 위해 일한 한 가지 해결책은

  1. 왼쪽 사이드 바에서 대상을 클릭하십시오. How to Change the Optimization Level in Xcode 6 for Swift

    : 빌드에
  2. 클릭 '최적화 레벨'
  3. 변경

소스 (우리가 버그를 해결하기 위해 -Onone에 최적화 레벨을 설정했다) 필요에 따라 값

  • 검색 설정
  • 0

    데이터를 포함하는 모든 변수를 String 데이터 유형으로 변환해야합니다. 어쩌면 'AnyObject'또는 'Date'데이터 유형으로 인해 문제가 발생했을 수 있습니다.

    관련 문제