Ich möchte die Protokolldatei unter meiner Erweiterung schreiben und sie in meiner App lesen. Dazu verwende ich Gruppen geteilt (also sowohl die App und die Erweiterung aus der gleichen Datei zu lesen, wären in der Lage)Datei im gemeinsam genutzten Container der App-Erweiterung kann nicht gefunden werden
ich den folgenden Code geschrieben:
Erweiterung:
let fileManager = NSFileManager.defaultManager()
let containerUrl = fileManager.containerURLForSecurityApplicationGroupIdentifier("group.MyCompany.MyProj")
let extensionLogDirectory = containerUrl?.path?.stringByAppendingString("AppExtensionLogs")
let logFileManager = DDLogFileManagerDefault(logsDirectory: extensionLogDirectory)
PacketTunnelProvider.fileLogger = DDFileLogger(logFileManager: logFileManager)
PacketTunnelProvider.fileLogger!.rollingFrequency = 60*60*12
PacketTunnelProvider.fileLogger!.logFileManager.maximumNumberOfLogFiles = 1
DDLog.addLogger(PacketTunnelProvider.fileLogger)
App (nur die Log-Datei zu lesen):
let fileManager = NSFileManager.defaultManager()
let containerUrl = fileManager.containerURLForSecurityApplicationGroupIdentifier("group.MyCompany.MyProj")
if let extensionLogDirectory = containerUrl?.path?.stringByAppendingString("AppExtensionLogs") {
do {
let directoryContents = try fileManager.contentsOfDirectoryAtPath(extensionLogDirectory)//always fails
for file in directoryContents {
let path = extensionLogDirectory.stringByAppendingString(file)
do {
let fileContents = try NSString(contentsOfFile: path, encoding: NSUTF8StringEncoding)
NSLog("file: \(fileContents)")
}
catch {/* error handling here */
}
}
}
catch {/* error handling here */
NSLog("nope!")
}
Aber jetzt etwas richtig - es ist scheint wie contentsOfDirectoryAtPath immer mit „keine solche Datei“ schlägt fehl Fehler Was ist falsch in diesem Code?
Wahrscheinlich „stringByAppendingString“ sollte „stringByAppendingPathComponent“ (oder besser „URLByAppendingPathComponent“) - Wenn Sie die erstellten Pfade einloggen dann werden Sie sehen, dass das Pfadtrennzeichen "/" fehlt :) –
Danke! Das war's. Sende es als Antwort und ich akzeptiere es als korrekt – Roee84