14485

[code]

    import UIKit
    import RealmSwift
    import Foundation
    
    class dic: Object {
        dynamic var ID = 0
        dynamic var yomi = ""
        dynamic var emoji = ""
        dynamic var date = NSDate(timeIntervalSince1970: 1)
    
        override static func primaryKey() -> String? {
            return "ID"
        }
    }
    
    class KeyboardViewController: UIInputViewController {
    
        @IBOutlet var nextKeyboardButton: UIButton!
        var button11: UIButton!
        var button12: UIButton!
        var fFastBoot = true
        var fPri = CGFloat(20)
        var ifontSize = 18.0
        var RPath = ""
    
        // Portrait表示におけるキーボードの高さ
        private var portraitHeight: CGFloat = 190.0
        private var portraitWidth: CGFloat!
    
        // Landscape表示におけるキーボードの高さ
        private var landscapeHeight: CGFloat = 100.0
        private var landscapeWidth: CGFloat!
    
        override func updateViewConstraints() {
            super.updateViewConstraints()
    
        }
    
        var realmPath: String {
            let paths = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)
            let path = (paths[0] as NSString).stringByAppendingPathComponent("test.realm")
            return path
        }
    
        override func viewDidLoad() {
            super.viewDidLoad()
    
            let pas = realmPath
            print(pas)
    
            // Perform custom UI setup here
    
            ・・・
    
            let inputText = "か"
            let realm = try! Realm()
            let results = realm.objects(dic)
                .filter("yomi BEGINSWITH %@", inputText)
                .sorted("date", ascending: false)
    
            for result in results {
                print(result)
            }
        }
    ・・・
    
[/code]

RealmのDBは以下のところになっている。これがまずいのか？

[code]

    /Users/User/Library/Developer/CoreSimulator/Devices/830BF1AF-9059-445F-AC17-FC40D97C9C6E/data/Containers/Data/PluginKitPlugin/AF4996B9-848C-4BA9-BFBB-1B743A45431B/Documents/test.realm
    
[/code]

実際は・・・

[code]

    /Users/User/Desktop/ソフト開発/test/Documents/test.realm
    
[/code]

ただ、iOSの場合、どちらも間違いになるのか？

わかる方、教えていただければ幸いです。


CC BY-SA 3.0
2015-08-16T12:08:09.630
14476
2015-08-16T15:52:42.453
2015-08-16T15:52:42.453
5519
10845
question
ios swift
カスタムキーボードエクステンションからファイルが読み込めない


エクステンションについての話であることを失念していました。

エクステンションの場合に決まったディレクトリにファイルを保存してそのデータを再利用できるようにするには、App
Groupを設定して共有ディレクトリにファイルを配置する必要があります。

**参考URL**  
<https://developer.apple.com/library/prerelease/ios/documentation/General/Conceptual/ExtensibilityPG/ExtensionScenarios.html>

App Groupを設定するにはまず、デベロッパーサイトでApp GroupのIDを登録する必要があります。

[![画像の説明をここに入力](https://i.stack.imgur.com/c8Rna.png)](https://i.stack.imgur.com/c8Rna.png)

そして、Xcodeのプロジェクト設定から、キーボードのターゲットを選択し、「Capabilities」タブにある「App Groups」をオンにします。

そして、先ほど追加したApp Group IDにチェックを入れます。

[![画像の説明をここに入力](https://i.stack.imgur.com/yX3gv.png)](https://i.stack.imgur.com/yX3gv.png)

そうするとApp Groupが利用できるようになっていますので、共有ディレクトリのパスは下記のコードで取得します。

[code]

    var realmPath: String {
        let containerURL = NSFileManager().containerURLForSecurityApplicationGroupIdentifier("group.com.kishikawakatsumi.realm")
        let filePath = containerURL?.filePathURL?.path?.stringByAppendingPathComponent("test.realm")
    
        return filePath!
    }
    
[/code]

引数のApp Group IDはご自分で作成したものに変更してください。

これで、毎回ファイルの保存先が変わってしまうことは無くなりますので、このファイルに初期データを保存して利用します。


CC BY-SA 3.0
2015-08-16T13:37:21.133
14485
2015-08-16T13:37:21.133
5519
14476
answer