2017-05-21 3 views
1

Also, ich entwickle zwei Apps, die ich den gleichen iCloud-Container verwenden möchte.iOS-App Verwendet keinen benutzerdefinierten iCloud-Container

Ich habe alle Schritte wie in Xcode und Apple Online-Dokumentation ausgeführt. Ich habe die iCloud-Funktion zu meiner App hinzugefügt, das Kontrollkästchen CloudKit aktiviert und einen benutzerdefinierten Container ausgewählt, mit dem ich arbeiten wollte (offensichtlich der gleiche für beide Apps).

Die App hat die ID des iCloud-Containers in der Berechtigungsdatei geändert, die anzeigt, dass alles ordnungsgemäß funktioniert. Wenn ich jedoch die App verwende und den Namen meines Containers ausdrucke, wird der Name des Standardcontainers für jede App angezeigt.

für beide Anwendungen, sieht die Capabilities Bildschirm dies wie: enter image description here

Ich habe ein Objekt erstellt, CloudKitController, alle Cloud-Datenverkehr zu verwalten. Ich intialize es Überstunden die App startet, und Variablen wie folgt aufgebaut:

var container:  CKContainer 
var publicDB:  CKDatabase 
let privateDB:  CKDatabase 
var delegate:  CloudKitControllerDelegate? 

override init() { 
     container = CKContainer.default() 
     print(container.containerIdentifier) 
     //this prints the name of the default container for the project 
     publicDB = container.publicCloudDatabase 
     privateDB = container.privateCloudDatabase 
    } 

ich sogar in den Entwickler-Portal ging und sorgte dafür, dass der Behälter I ist der einzige Behälter verwenden möchten beide Anwendungen zugeordnet sind. hat auch nicht funktioniert.

Meine Frage ist: Wie bekomme ich zwei Anwendungen, offensichtlich aus dem gleichen Entwickler-Konto und Provisioning-Profil, um auf einem iCloud-Container zu arbeiten?

+0

Bearbeiten Sie Ihre Frage mit dem entsprechenden Code, der anzeigt, wie Sie auf den 'CKContainer' in beiden Apps zugreifen. – rmaddy

+0

Fertig! Benötigen Sie weitere Informationen? Ich würde mich mehr als glücklich machen, es zu liefern! – Joris416

Antwort

2

Sie haben angegeben, dass Sie mit einem bestimmten Container mit einer bestimmten Kennung arbeiten möchten. Der Code, den Sie haben, greift jedoch gezielt auf den Standardcontainer der App zu. Das ist nicht das, was du willst.

Wechsel:

container = CKContainer.default() 

zu:

container = CKContainer(identifier: "your shared container id") 

Weitere Einzelheiten finden Sie in der Dokumentation für die CKContainer Klasse.

+0

Ich vermutete, dass die Auswahl eines Containers im Capabilities-Bildschirm der App diesen Container automatisch in den Standard-Container verwandelte. Vielen Dank! – Joris416

+0

Eine App kann den Standardcontainer und eine beliebige Anzahl bestimmter Container gleichzeitig verwenden. Es wäre also schlecht, wenn der Standard einen anderen spezifischen Container magisch referenzieren würde. – rmaddy

Verwandte Themen