SWIFT: Save NSAttributedString into text file

To save NSAttributedString string into text file we convert first NSAttributedString into Data and afterwards save Data as usual into a text file:

do {
   let rtfData = try attributedText.data(from: .init(location: 0, length: attributedText.length), documentAttributes: [.documentType: NSAttributedString.DocumentType.rtf])
   try rtfData.write(to: fileURL, options: .atomic)
} catch {
   print(error)
}

SWIFT: Insert substring into string

Working with Strings in Swift is quite different then in Objective-C. Inserting a substring into a string is pretty tricky. Let’s assume following task: given is a html string and we want to extend it by adding some style, i.e. we want to add a string of type <style>/**some style*/</style>
before closing tag </head>. Of course, there is a number of ways how to realize it, e.g JavaScript injection, XML manipulation etc. But let’s see how it can be done using Strings’ operations.

Base idea: we split our HTML string into two parts using String[Range<String.Index>] subscript: before </head> and after </head>. Then we concatenate these parts: part1 + styleString + part2. And this is how it looks in code:

        let styleString = String(format: "<style>%@</style>", cssString)
        var enrichedHtmlString = htmlString
        if let range = enrichedHtmlString.range(of: "</head>") {
            let substringPrefix = enrichedHtmlString[enrichedHtmlString.startIndex..<range.lowerBound]
            let substringSuffix = enrichedHtmlString[range.lowerBound ..< enrichedHtmlString.endIndex]
            enrichedHtmlString = substringPrefix + styleString + substringSuffix
        }

Feel free to contact me if you find a better way to realise inserting substrings into strings in Swift.

PolterApp Version 3.7

Es wurde Unterstützung für den iOS 13 “Dunklen” Modus eingebaut. Polter bei Nacht zu erfassen macht nun noch mehr Spaß 😉 Es wurde außerdem ein kleiner Fehler beim Polterstatus behoben. Die Auswahlwerte sind nun richtig ins deutsche übersetzt.

PolterApp Version 3.6

Fehlerbehebung: App stürzt nicht mehr ab, wenn Stammerfassungsmaske nach dem iPhone-Drehen verlassen wird 

###

Fehlerbehebung: das Löschen eines Polters setzt die Polterliste nicht mehr in den Bearbeitungsmodus

###

Weitere iOS 13 Anpassungen

Cheat-sheets Version 2.7

EN

In the previous version of the Cheat-sheets app a critical bug made the app crashing during data synchronisation with Apple Watch. This bug is fixed. Hopefully, the app review process by Apple will not take much time.

DE

Ein kritischer Bug, welcher in die letzte Version von Sipicker reingerutscht ist, wurde operativ behoben. Hoffentlich dauert der Review Prozess bei Apple nicht sehr lange.

RU

Ёптель! Баг и еще какой – приложение сыпиться при попытке синхронизации данных с часами Apple Watch. Ошибка исправлена, приложение проходит процедуру модерации у Apple. Ждем, надеемся, что недолго!

Cheat-sheets Version 2.6

EN

Last release the character limit for the note length was built into the Cheat-sheets app to avoid crashes on older devices. Of course, there are users out there with the latest version of Apple Watch and they were surprised of the changes, because they had no problems at all with larger notes on their Apple Watch. So, now it is possible to switch off the length limitation in the app preferences. Hey, but at you own risk 😉

DE

Einige glückliche Besitzer der letzten Apple Watch waren etwas enttäuscht wegen Einführung der Einschränkung auf die Notizlänge. Was auch verständlich ist, weil sie keinerlei Probleme auch mit größeren Notizen auf ihrer Apple Watch hatten. Es gibt nun eine Möglichkeit, diese Einschränkung in den App Settings aufzuheben. Aber hey, auf eigenes Risiko 😉

RU

Хорошие новости для тех у кого “и так все работало” до введения ограничений на размер записей. Ограничение можно теперь убрать в настройках приложения! Но, это, только под собственную ответственность 😉

Cheat-sheets Version 2.5

EN

It became necessary to build into the Cheat-sheets a limit for the character count of the notes to avoid crashes on the Apple Watch. The current character count is 4000. For better overview over the input text properties the total count of word and character is displayed now below the note input field 

DE

Es wurde notwendig eine Einschränkung für die Gesamtzahl der Zeichen einzubauen, da die App auf der Apple Watch bei größeren Dateien häufig abstürzte. Die Notizen dürfen nun maximal 4000 Zeichen lang sein. Um den Überblick über die verbleibenden Zeichen zu behalten, wird die Anzahl der Wörter und der Zeichen unter der Textbox angezeigt

RU

Суровая действительность вынудила ввести ограничение на размер записей, так как приложение часто вылетало на часах Apple Watch при попытках загрузить большие текстовые файлы. Теперь максимальный размер записи составляет 4000 символов. Количество слов и символов в записи отображается теперь под полем для ввода текста