Realm Objective-CをSwiftから使う際にマイグレーションのコードでコンパイルエラー
現在、Realmの使い方を学んでいます。
そこで、http://qiita.com/jtemplej/items/10ed4bc0cc6519682e6e#notification のコードを下記のように書き写して、マイグレーションを勉強しています。
// Book.swift
class Book : RLMObject {
dynamic var isbn = ""
dynamic var name = ""
dynamic var price = 0
//サムネイルを追加したいから、imageURLを追加
dynamic var imgURL = ""
dynamic var publisher = Publisher()
dynamic var owner: Publisher? {
return linkingObjectsOfClass("Publisher", forProperty:"books").first as? Publisher
}
class func find(isbn:String) -> Book? {
let result:Optional = Book.objectsWithPredicate(NSPredicate(format: "isbn = %@", isbn))
if let books = result {
return books.firstObject() as? Book
}
return nil
}
override class func primaryKey()->String{
return "isbn"
}
}
// AppDelegate.swift
import UIKit
import Realm
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
var window: UIWindow?
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
// Override point for customization after application launch.
RLMRealm.setSchemaVersion(1, forRealmAtPath:RLMRealm.defaultRealmPath() , withMigrationBlock: { (migration,oldSchemaVersion) in
if oldSchemaVersion < 1 {
migration.enumerateObjects(Book.className()) { (oldObject, newObject) in
let book2 = newObject as! Book
let isbn = oldObject["isbn"] as! String // <--ここで、'AnyObject' is not convertible to 'String'とエラーが出てしまう
}
}
})
return true
}
上記のように、let isbn = oldObject["isbn"] as! Stringの部分で、'AnyObject' is not convertible to 'String'というエラーがでてしまう状態を解決できません。
どのようにすればよいのか教えてください。