14196


サンプルでは以下のようになっています。

[code]

    // Person model
    class Person: Object {
        dynamic var name = ""
        dynamic var birthdate = NSDate(timeIntervalSince1970: 1)
    }
    
    // Create a Person object
    let author = Person()
    author.name = "David Foster Wallace"
    
    // Get the default Realm
    let realm = Realm()
    // You only need to do this once (per thread)
    
    // Add to the Realm inside a transaction
    realm.write {
      realm.add(author)
    }
    
[/code]

しかし、以下の行がエラーになってしまいます。

[code]

    let realm = Realm()
    
[/code]

特にRealm()の部分のようです。  
環境はXCODE7Bata5です。  
改善策か、間違いを指摘していただければ幸いです。

一応

[code]

    import RealmSwift
    
[/code]

も、しています。


CC BY-SA 3.0
2015-08-09T02:49:34.053
14194
2015-08-12T09:11:47.753
2015-08-12T09:11:47.753
5519
10845
question
swift realm
Swift 2とRealmSwiftでコンパイルエラー: Call can throw, but it is not marked with 'try' and the error is not handled


Swift 2ではエラー処理の方法として新たに`try`、`catch`、`throw`というキーワードと文法が導入されました。

<https://developer.apple.com/swift/blog/?id=29>  
<https://developer.apple.com/library/prerelease/ios/documentation/Swift/Conceptual/Swift_Programming_Language/ErrorHandling.html>

RealmSwiftのAPIも標準のエラー処理の方法に沿うように、Swift 2からはAPIが変更されていますので、それに合わせて変更する必要があります。

具体的には、`Realm`をインスタンス化はエラーが起こる可能性（書き込み権限が無い、パスが間違っている、など）のある処理ですので、エラー処理が必要になります。

下記のように`do-try-catch`構文にて何らかのエラーが発生した場合は`catch`節でエラー処理をします。

[code]

    do {
        let realm = try Realm()
    
        realm.write {
            realm.add(author)
        }
    } catch {
        // Error handling...
    }
    
[/code]

または、エラー処理が不要で無視する場合は`try!`を使うこともできます。

[code]

    let realm = try! Realm()
    
    realm.write {
        realm.add(author)
    }
    
[/code]


CC BY-SA 3.0
2015-08-09T04:17:05.730
14196
2015-08-09T04:17:05.730
5519
14194
answer