Post

Replies

Boosts

Views

Activity

Reply to How to force XCode 14.3 to install on Monterey
I found a not-so-perfect solution. It turned out that you can actually ignore Info.plist hacking. You can directly run it inside a Terminal window. I just downloaded Xcode_14.3.1_Release_Candidate.xip yesterday and I can get it running using the following commands: cd ~/Application/Xcode.app/Contents/MacOS ./Xcode It works without any problem. Building/debugging works fine. But there is some gotchas: The icon of course is shown as "No" sign. When there is no project open, and you switch to other apps, you have no way to switch it back because macOS won't list it when you press CMD+TAB, but it is in Activity Monitor. So comes a question. Does anyone know how bring Xcode app window back?
May ’23
Reply to Weird error with HTTPS connection
I found the answer myself. It's a misunderstanding of ATS (Apple Transport Security) feature. I thought only non-HTTPS protocol needs the following ATS in info.plist: <key>NSAppTransportSecurity</key> <dict> <key>NSAllowsArbitraryLoads</key> <true/> </dict> But it turned out that connecting to HTTPS also needs the above setting.
Topic: Programming Languages SubTopic: Swift Tags:
Oct ’23
Reply to Need advices on NSMutableArray in Swift
It's an agony working with array/dictionary in Swift! NSMutableArray does not support generics so I have to stick to Swift builtin array. I finally have to employ a not-so-perfect-and-ugly workaround: /// Act as a reference container for value types. open class ValueBox<ValueType> { public var value: ValueType public init(_ value: ValueType) { self.value = value } } // Arrays in a dictionary typealias TranslationUnitBox = ValueBox<[TranslationUnit]> var translations = [String: TranslationUnitBox>() // Later in some other code if let box = translations["en"] { box.value[index].translatedText = "..." }
Topic: Programming Languages SubTopic: Swift Tags:
Oct ’23
Reply to How parse byte size strings into actual number?
It seems I can use the builtin Scanner class: public extension String { func parseByteSize() -> UInt64? { var n: UInt64 = 0 let scanner = Scanner(string: self) if scanner.scanUnsignedLongLong(&n) { if !scanner.isAtEnd { let suffix = self[self.index(self.startIndex, offsetBy: scanner.scanLocation)...] switch suffix.uppercased() { case "KB": n *= 1024 case "MB": n *= 1024 * 1024 case "GB": n *= 1024 * 1024 * 1024 case "TB": n *= 1024 * 1024 * 1024 * 1024 default: return nil } } return n } return nil } }
Topic: Programming Languages SubTopic: Swift Tags:
Nov ’23
Reply to Does Swift support number suffixes?
Actually I don't have 'a lot' examples. I just started real app development using Swift a couple of months ago. For this specific scenario, I really like to have what I have in C/C++. Advantages: It can save a few key strokes and makes me as a developer feel better; and even more, makes Swift feels more swift. auto n = 12345ull; vs var n: UInt64 = 12345 Real world example (unit test): func testByteSize() { let tests = [ (s: "1234", v: 1234), (s: "1kb", v: 1024), (s: "1234k", v: 1234 * 1024), (s: "3mb", v: 3 * 1024 * 1024), (s: "2GB", v: 2 * 1024 * 1024 * 1024), (s: "7tb", v: 7 * 1024 * 1024 * 1024 * 1024), ] for test in tests { let n = test.s.parseByteSize() XCTAssertNotNil(n) XCTAssertEqual(UInt64(test.v), n!) } } If Swift allows me to code a number as 1234ull, I won't have to do the UInt64(test.v) cast. Moreover, I really like the tuple's v field be UInt64 instead of default Int.
Topic: Programming Languages SubTopic: Swift Tags:
Nov ’23