在WatchKit App和包含iOS App之间共享数据不起作用

时间:2018-05-09 12:40:21

标签: ios swift watchkit

我正在尝试共享最初在Watch App Extension中生成的文件,但它无法正常工作。我使用的是iOS 11.3和Watch 4.3。我也在使用模拟器。

我这样做了

  1. 在主应用和观看应用扩展中启用应用域。

  2. 已选择带有标识符的应用程序域。

  3. 参考https://www.techotopia.com/index.php/Sharing_Data_Between_a_WatchKit_App_and_the_Containing_iOS_App

    已添加代码:

    在Watch App Extension中:

        do {
            let fileManager = FileManager.default.containerURL(forSecurityApplicationGroupIdentifier: AppDomain)
            guard let url = fileManager?.appendingPathComponent("TabCareLogs.txt") else { return }
            try SOME_STRING.appendLineToURL(fileURL: url)
            print("WatchKit: FILE PATH \(url.path)")
            let result = try String(contentsOf: url, encoding: .utf8)
            debugPrint("############# FILE: \(result) #############")
        } catch let error {
            print("Could not write to file : \(error.localizedDescription)")
        }
    
    extension String {
    
        func appendLineToURL(fileURL: URL) throws {
            try (self + "\n").appendToURL(fileURL: fileURL)
        }
    
        func appendToURL(fileURL: URL) throws {
            let data = self.data(using: .utf8)!
            try data.append(fileURL: fileURL)
        }
    }
    
    extension Data {
        func append(fileURL: URL) throws {
            if let fileHandle = FileHandle(forWritingAtPath: fileURL.path) {
                defer {
                    fileHandle.closeFile()
                }
                fileHandle.seekToEndOfFile()
                fileHandle.write(self)
            }
            else {
                try write(to: fileURL, options: .atomic)
            }
        }
    }
    
      

    WatchKit:文件路径   /Users/abhishek/Library/Developer/CoreSimulator/Devices/D515C513-3975-4C8F-B07D-6A0CCCD1A8EC/data/Containers/Shared/AppGroup/90DC2A1A-61D6-440B-A499-9EA608CE0C2E/TabCareLogs.txt

    我正在获取文件及其内容。

    在主应用中:

     let fileManager = FileManager.default.containerURL(forSecurityApplicationGroupIdentifier: AppDomain)
            guard let url = fileManager?.appendingPathComponent("TabCareLogs.txt") else { return nil }
            print("FILE PATH \(url.path)")
            print("FILE PATH ABSOLUTE \(url.absoluteString)")
            let exists = FileManager.default.fileExists(atPath: url.path)
            print("FILE EXIST : \(exists)")
    
      

    文件路径   /Users/abhishek/Library/Developer/CoreSimulator/Devices/D5CED7C4-B674-4BF7-A72C-C063F733F4E7/data/Containers/Shared/AppGroup/77C1EAC2-2A86-4763-973F-33929C909619/TabCareLogs.txt

         

    FILE PATH ABSOLUTE   文件:///Users/abhishek/Library/Developer/CoreSimulator/Devices/D5CED7C4-B674-4BF7-A72C-C063F733F4E7/data/Containers/Shared/AppGroup/77C1EAC2-2A86-4763-973F-33929C909619/TabCareLogs.txt

         

    FILE EXIST:false

    如果我检查文件存在,那么我已经尝试打印我正在获取路径的路径,然后显示false

    同样的问题:NSFileManager.defaultManager().fileExistsAtPath returns false instead of true

    路径也不同我不知道为什么在使用共享容器之后它会走向不同的路径?

0 个答案:

没有答案