Die heutige Erweiterung konnte keine CoreMedia-Berechtigungen von erben

68

Ich versuche, meiner Objective-C-App eine Today-Erweiterung in Swift hinzuzufügen. Ich erhalte diese Meldung immer wieder in meinem Debugger-Protokoll : Failed to inherit CoreMedia permissions from 3005: (null). Die Nummer ex. 3005 ist jedes Mal anders. Ich lese aus NSUserDefaults aus dem Widget heraus, aber ich lese / schreibe in der App selbst. Der einzige Code in meinem TodayViewController ist folgender:

override func viewDidLoad() {
    super.viewDidLoad()

    let formatter = NSNumberFormatter()
    formatter.numberStyle = .CurrencyStyle
    totalLabel.text = formatter.stringFromNumber(0)
    coinsLabel.text = formatter.stringFromNumber(0)

    formatter.maximumFractionDigits = 0
    billsLabel.text = formatter.stringFromNumber(0)

}

func widgetMarginInsetsForProposedMarginInsets(defaultMarginInsets: UIEdgeInsets) -> UIEdgeInsets {
    return UIEdgeInsetsMake(8.0, 16.0, 8.0, 16.0)
}

func widgetPerformUpdateWithCompletionHandler(completionHandler: ((NCUpdateResult) -> Void)!) {
    // Perform any setup necessary in order to update the view.

    // If an error is encountered, use NCUpdateResult.Failed
    // If there's no update required, use NCUpdateResult.NoData
    // If there's an update, use NCUpdateResult.NewData

    completionHandler(NCUpdateResult.NewData)
}
Shan
quelle
2
Ich habe das gleiche Problem. Ich habe auch festgestellt, dass der von meinem Widget verbrauchte Speicher danach auf fast 1 GB skaliert, was wirklich seltsam ist, da ich nur eine einfache Netzwerkanforderung ausführe und nicht einmal ausgeführt werde.
Afonso Tsukamoto
Ich auch. Aber ich benutze Swift überhaupt nicht und für mich erscheint es beim Zugriff auf eine Methode in einer meiner NSManagedObject-Unterklassen (die tatsächlich als NSManagedObject interpretiert zu werden scheint, was für sich genommen seltsam genug ist).
Flohei
Ich habe mit Xcode 6.1 Beta nachgesehen und die Nachricht ist immer noch da. Ich sehe keine Laufzeitprobleme mit meinen Erweiterungen und der Debugger sagt nicht ausdrücklich, dass dies eine Warnung ist. Ich hoffe, Apple wird die App nicht ablehnen, wenn ich sie zur Überprüfung einreiche.
Shan
1
Ich habe ein ähnliches Problem. Der Fehler wird wahrscheinlich behoben, wenn Sie "widgetMarginInsetsForProposedMarginInsets" entfernen. (Ich erhalte den gleichen Fehler, wenn ich "PreferredContentSize" verwende). Ich habe immer noch nicht herausgefunden, wie ich das tatsächlich lösen kann.
Pandafox
1
Ich entwickle eine benutzerdefinierte Tastatur und sehe mich von Zeit zu Zeit mit dieser Meldung konfrontiert. Ich habe festgestellt, dass diese Protokollmeldung nicht angezeigt wird, wenn ich "Team" auf der Registerkarte "Allgemein" der Zieleinstellungen sowohl für mein enthaltenes App-Ziel als auch für mein Erweiterungsziel auf "Keine" setze (und nach dieser Änderung bereinige). Ich glaube, es ist ein Fehler in iOS.
Vbezhenar

Antworten:

53

Ich glaube, die Warnung "CoreMedia-Berechtigungen konnten nicht von NNNN geerbt werden" bezieht sich auf App-Gruppen, wenn Sie eine App-Erweiterung erstellen. Sowohl für Ihre enthaltene Anwendung als auch für Ihre App-Erweiterung muss die Funktion "App-Gruppen" aktiviert sein und dieselbe App-Gruppen-Container-ID verwenden (Beispiel: group.com.yourdomain.yourappname). App-Gruppen werden verwendet, um mehreren Apps den Zugriff auf gemeinsam genutzte Container zu ermöglichen und eine zusätzliche Interprozesskommunikation zwischen Apps zu ermöglichen.

Funktionen sollten so aussehen

Jon
quelle
35
Das habe ich schon gemacht. App-Gruppen sind sowohl für die App als auch für das Erweiterungsziel aktiviert und verwenden dieselbe Gruppe.
Shan
1
Ich bin mir dann nicht sicher. Ich habe die Warnung erhalten, nachdem ich eine Vorlagen-App-Erweiterung erstellt habe. Ich hatte keinen benutzerdefinierten Code hinzugefügt. Durch das Aktivieren von App-Gruppen wurde das Problem für mich behoben. Geben Sie beim Lesen von NSUserDefaults suiteName an? ZB var userDefaults = NSUserDefaults (suiteName: "group.com.yourdomain.yourappname")
Jon
Ja Jon, das bin ich. Ich habe eine andere Beispiel-App ( raywenderlich.com/83809/ios-8-today-extension-tutorial ), die alle Swift ist (sowohl die enthaltende App als auch die Erweiterung), daher schließe ich aus, dass dies auf eine Mischung aus Obj-C zurückzuführen ist und Swift. Die erwähnte Beispiel-App verwendet ein benutzerdefiniertes Framework anstelle von App-Gruppen und erhält diese Nachricht auch im Protokoll. Ich hoffe, das ist nur ein Xcode-Fehler. Übrigens verwende ich Version 6.0.1.
Shan
1
Noch etwas sollte ich erwähnen: Es gab eine App-Gruppe, die ich erstellt, aber falsch benannt habe. Ich habe diese nicht verwendete Gruppe für beide Ziele deaktiviert, kann sie jedoch nicht löschen.
Shan
3
Das gleiche Problem, aber dies passiert nur im Emulator für mich, funktioniert gut auf einem realen Gerät
mliu
16

Klicken Sie zuerst auf Assets.xcassets

Klicken Sie zunächst auf Assetes.xcassets

Klicken Sie zweitens auf Zielmitgliedschaft, überprüfen Sie sowohl Ihre App als auch Ihr Widget, um dem Widget den Zugriff auf Ihre Ressourcen zu ermöglichen.

Zweitens klicken Sie auf Zielmitgliedschaft

Führen Sie danach Ihr Widget erneut aus. Es sollte nun einwandfrei funktionieren.

vhong
quelle
Wenn dies die richtige Antwort zu sein scheint, lassen Sie es uns oben auf der Seite sehen.
Stuart P.
Für mich ist das Problem, dass ich Informationen aus einer Klasse in meiner App an meine Erweiterung weitergegeben habe. Das Problem wurde behoben, als ich beide Ziele für diese Datei auswählte. Mit
Andres Paladines
14

Ich hatte die gleiche Protokollausgabe. Die Reinigung hat (Cmd + Shift + K)es für mich gelöst.

Maurice
quelle
Ich habe es nach dem Hinzufügen einer App-Gruppe gemacht, daher weiß ich nicht, dass es bei diesem Schritt hilft. Aber danke für die Lösung;)
Quver
Ja, manchmal ist es einfach komisch!
Maurice
Leider kehrt manchmal das Problem zurück
Quver
1
Info.plist gibt es einen Eintrag ähnlich dem Bundle-Anzeigenamen
Maurice
9

Ich stoße auch auf dieses Problem, und die einzige Lösung, die ich gelöst habe, war das Hinzufügen vertikaler und horizontaler Einschränkungen für jedes einzelne Objekt im Storyboard.

Phanith
quelle
Seltsamerweise hat er recht. Ich habe den gleichen Fehler bekommen und hier alles versucht, aber nichts hat funktioniert. Ich habe dies gesehen und einfach die Heute-Ansicht ausgewählt und "Fehlende Einschränkungen hinzufügen" ausgewählt. Dann ging der Fehler weg und die Today-Erweiterung wird jetzt ausgeführt.
William T.
Follow-up, ich habe gerade die Einschränkungen gelöscht und jetzt erhalte ich wieder den CoreMedia-Berechtigungsfehler ... also ist dieser Fehler definitiv mit Einschränkungen verbunden. Außerdem wurde bestätigt, dass der obige AppGroup-Schritt erforderlich ist. Wenn ich das ausschalte, wird der Fehler erneut angezeigt.
William T.
1
Ich habe jede mögliche Einschränkung hinzugefügt ... immer noch diesen Fehler zu sehen
Oren
Constraint-bezogen auch für mich. Ich weiß, ich sollte nicht nur kommentieren, um "ich auch" zu sagen, aber da diese Antwort ziemlich seltsam ist und anscheinend keinen Sinn ergibt, habe ich sie übersehen, obwohl dies die einzige ist, die tatsächlich für mich funktioniert hat!
cdf1982
Kann bestätigen - um genau zu sein, der Fehler ist nur im Simulator aufgetreten. Auf dem Gerät hat es gut funktioniert. Durch das Hinzufügen von Einschränkungen zu allen Objekten funktionierte es auch im Simulator. Ich musste keine App-Gruppen hinzufügen oder aktivieren.
Kiddailey
7

Check in Mainstoryboard der heutigen Erweiterung, Viewcontroller mit der Option "Is Initial View Controller" wurde aktiviert.

pavelcauselov
quelle
4

Sehr irreführender Fehler. Wie oben erwähnt. Wählen Sie Ihren Ansichts-Controller aus und fügen Sie fehlende Einschränkungen hinzu oder fügen Sie Einschränkungen hinzu, um das Problem zu beheben.

Geben Sie hier die Bildbeschreibung ein

bpolat
quelle
4

Nachdem ich die meisten Dinge getan hatte, die in den Antworten auf diese Frage erwähnt wurden, und immer noch Fehler mit dem heutigen Widget bekam, fand ich etwas, das für mich funktionierte.

Öffnen Sie die Build-Einstellungen Ihres Widget-Ziels und suchen Sie nach Always Embed Swift Standard Libraries . Wählen Sie Ja.

Hoffe, das funktioniert für Sie, wenn nichts anderes nicht geholfen hat

Moonvader
quelle
2

Ich hatte das gleiche Problem beim Ausführen meiner Erweiterung. In meinem Fall wurde es gelöst, indem die Erweiterung auf dem realen Gerät ausgeführt wurde.

Ramakrishna
quelle
2

Dies traf mich, weil ich eine benutzerdefinierte konsolidierte init(nibName:bundle:coder:)Methode in meinem Ansichts-Controller hatte und diese implementiert hatte initWithCoder, um Swift zufrieden zu stellen:

required init?(coder aDecoder: NSCoder) {
    self.init(nibName: nil, bundle: nil, coder: aDecoder)
}

Ich habe das Problem behoben, indem ich super.init(coder:)stattdessen diesen Implementierungsaufruf ausgeführt habe :

required init?(coder aDecoder: NSCoder) {
    // [...setting some variables...]
    super.init(coder: aDecoder)
}
Marco
quelle
1

Ich habe festgestellt, dass Sie, wenn Sie ein StoryBoard verwenden, in info.plist gehen und die Eigenschaft entfernen müssen NSExtensionPrincipalClass. Danach wurde die Erweiterung einwandfrei geladen.

BrenBoh
quelle
0

Ich habe meinen Fall folgendermaßen gelöst: Aktivieren Sie App-Gruppen für Container- und Erweiterungs-Apps. Und löschen Sie alle versteckten UIKit-Steuerelemente alsUILabel, UIView, ...

Phuongle
quelle
0

Ich bin auch auf dieses Problem gestoßen. Das Problem für mich war, dass ich zwei Programme gleichzeitig auf meinem Simulator ausführte. Nachdem ich einen von ihnen gestoppt hatte, verschwand die Fehlermeldung. Ich hoffe es hilft.

joshLor
quelle
0

Hier ist meine Erfahrung mit dieser Fehlermeldung. Ich hatte ein Storyboard mit 4 ViewControllern. Ich habe einen Refactor-Extrakt für alle erstellt, daher habe ich jetzt 5 Storyboards, von denen 4 View-Controller und das Original "main" nur Storyboard-Referenzen enthielten.

Nun ... das ist schlecht. Tu das nicht.

Alles hat funktioniert, als ich das ursprüngliche Storyboard in der ursprünglichen Storyboard-Datei belassen habe, sodass ich nicht nur eines davon überarbeitet habe.

Paul Cezanne
quelle
-3

Stellen Sie sicher, dass der Parameter von [[NSUserDefaults alloc] initWithSuiteName:APP_GROUP]mit dem von Ihnen definierten Gruppennamen übereinstimmt.

BillChan
quelle
-5

Es ist das Problem des Simulators, probieren Sie einige echte Geräte aus.

Prodd Dd
quelle
2
Versuchen Sie, eine ausführlichere Beschreibung und vollständige Antwort zu geben, wenn möglich mit Beispiel und Codes.
Prafulla Kumar Sahu
Für mich trat dieser Fehler nur im Simulator auf und nicht beim Seitenladen eines Geräts.
Benc
Es ist seltsam, dass die Leute eine Lösung wie "nur sauber bauen" massiv positiv bewerten und dies ablehnen.
Nikans