2017-10-24 4 views
0

Ich habe eine UIDocument-basierte App, die eine Liste von Dokumenten in iCloud gespeichert zeigt. Ich bekomme ihre Dateinamen (zum Anzeigen) von NSMetadataItem mit metadataItem.value(forAttribute: NSMetadataItemDisplayNameKey). Die Dokumente enthalten eine Zeichenfolge, und ich habe die localizedName-Eigenschaft überschrieben, um einen besseren Namen zu erzeugen, der diese Zeichenfolge enthält. Im Idealfall möchte ich die localisedName -Eigenschaft von UIDocument vor dem Download anzeigen. Gibt es eine Möglichkeit, dies zu tun?Erhalten lokalisierter Name von UIDocument, ohne das gesamte Dokument herunterzuladen?

Ich speichere meine UIDocument als FileWrapper mit FileWrapper s für jeden Teil des Dokuments. In meinem Fall ist dies nur ein UIImage und ein String.

Ich bekomme das Thumbnail, ohne das Dokument herunterzuladen, also habe ich mich gefragt, ob es eine gleichwertige Sache für diese Zeichenfolge gibt.

Ich benutze Swift 4, aber ich denke nicht, dass das hier einen Unterschied macht. Danke vielmals.

Antwort

0

Josh,

fileURL.deletingPathExtension(). LastPathComponent

wird Ihnen das Äquivalent der un-überschrieben LocalizedName.

Ich kann aus Ihrem Beitrag schließen, dass Sie wissen, dass Ihre metadataquery.results Ihnen eine Liste von URLs geben wird. Sie können dies für jede URL verwenden.

FYI, der nicht überschriebene lokalisierteName wird nicht einmal funktionieren, nachdem Ihr UIDocument instanziiert wurde, Sie müssen es zuerst öffnen, was albern erscheint.

Wenn Sie einen Namen mehr Phantasie als das und nicht basierend auf der Datei URL müssen dann müssen Sie die Datei zuerst öffnen, soweit ich das beurteilen kann.

Ich weiß, dass Sie dies verstehen, aber für andere, überschreiben lokalisiertenName können Sie nur ändern, um eine Zeichenfolge, die Sie möchten, wahrscheinlich basierend auf dem Standort des Benutzers, smiley Gesicht.

Mit FileWrappers können Sie jede gespeicherte Variable öffnen und abrufen und müssen nicht das "Big Object" öffnen. Thumbnails wurden auf diese Weise geladen, wurden jedoch auf native in der Cloud aktualisiert, da sie einen Dateibrowser hinzugefügt haben.

Haben Sie Zeitdruck, um diese in einem TableView, CollectionView, aufzulisten? Der Grund, warum ich frage, ist, dass UIDocument nicht ARC-kompatibel ist, während eine Datei geöffnet ist, der Deamon, der es mit der Cloud verbindet, wird einen harten Verweis behalten, den Deamon verlangsamen, nehme ich an, und erlaube dem UIDocument nicht zu deminit wenn die TableViewCell ist wiederverwendet, bevor die Datei geschlossen wird, dh der Zeiger auf das Dokument ist verloren.

+0

Danke, aber ich frage mich, ob ich meinen benutzerdefinierten, überschriebenen Dokumentnamen bekommen könnte, ohne das Dokument öffnen zu müssen, so wie ich Thumbnails bekomme. Es hört sich so an, als wäre das nicht möglich: Wenn ich die Benachrichtigung erhalte, dass eine neue Datei existiert, muss ich einen temporären Namen (möglicherweise den Dateinamen) anzeigen, bis genügend Daten heruntergeladen sind, damit ich den benutzerdefinierten Titel erzeugen kann. –

+0

Sie haben nicht gesagt, wie Sie die Namen anpassen wollten, vielleicht, wenn Sie ein Beispiel gaben. – Sojourner9

+0

Ich meine, dass der Name angepasst werden würde basierend auf etwas, das das gesamte Dokument erfordern könnte. Auf dem Gerät, das diesen Inhalt hat oder erstellt hat (und hat), würde er den Namen als eine Art von Metadaten speichern, so dass das neue Gerät nur diese Namenszeichenfolge herunterladen konnte, bevor das gesamte Dokument heruntergeladen wurde. –

Verwandte Themen