Ябло (Свежее) / Говнокод #26738 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
  16. 16
  17. 17
  18. 18
  19. 19
  20. 20
  21. 21
  22. 22
  23. 23
struct Ololo: Comparable {
    let value: Int
    
    static func < (lhs: Ololo, rhs: Ololo) -> Bool {
        return lhs.value < rhs.value
    }
    
    static func < (lhs: Ololo, rhs: Ololo) -> String {
        if lhs.value < rhs.value {
            return "LESS"
        } else if lhs.value > rhs.value {
            return "MORE"
        } else {
            return "EQUAL"
        }
    }
}

let ololo1 = Ololo(value: 100)
let ololo2 = Ololo(value: 200)

let bool: Bool = ololo1 < ololo2
let string: String = ololo1 < ololo2

А в плюсах можно в operator> любую херь вернуть © jojaxon

Наверное, я поторопился, когда сказал, что крестобляди будет в свифте тесно.

Desktop Desktop, (Updated )

Комментарии (59, +59)

Ябло (Свежее) / Говнокод #26534 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
  16. 16
  17. 17
  18. 18
  19. 19
  20. 20
  21. 21
  22. 22
  23. 23
import Foundation

@objc protocol SomethingDoable {
    func doSomething()
}

class Inner: SomethingDoable {
    @objc func doSomething() {
        print("Inner!")
    }
}

@objc class Outer: NSObject {

    let inner: SomethingDoable = Inner()

    override func forwardingTarget(for aSelector: Selector!) -> Any? {
        return inner
    }
}

let outer = Outer()
outer.perform(#selector(SomethingDoable.doSomething))

Удачного дебага!

Desktop Desktop, (Updated )

Комментарии (52, +52)

Ябло (Свежее) / Говнокод #25705 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
  16. 16
  17. 17
  18. 18
  19. 19
/* Create a JSON object from JSON data stream. The stream should be opened and configured. All other behavior of this method is the same as the JSONObjectWithData:options:error: method.
     */
open class func jsonObject(with stream: InputStream, options opt: ReadingOptions = []) throws -> Any {
    var data = Data()
    guard stream.streamStatus == .open || stream.streamStatus == .reading else {
         fatalError("Stream is not available for reading")
     }
     repeat {
         var buffer = [UInt8](repeating: 0, count: 1024)
         var bytesRead: Int = 0
         bytesRead = stream.read(&buffer, maxLength: buffer.count)
         if bytesRead < 0 {
             throw stream.streamError!
         } else {
             data.append(&buffer, count: bytesRead)
         }
     } while stream.hasBytesAvailable
     return try jsonObject(with: data, options: opt)
}

Потоковое чтение JSON от авторов "iСделаль"

Desktop Desktop, (Updated )

Комментарии (23, +23)

Ябло (Свежее) / Говнокод #25669 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
  16. 16
  17. 17
  18. 18
  19. 19
  20. 20
  21. 21
  22. 22
  23. 23
  24. 24
  25. 25
  26. 26
  27. 27
  28. 28
  29. 29
  30. 30
  31. 31
  32. 32
  33. 33
  34. 34
  35. 35
  36. 36
  37. 37
  38. 38
  39. 39
  40. 40
  41. 41
  42. 42
  43. 43
  44. 44
  45. 45
  46. 46
  47. 47
  48. 48
  49. 49
  50. 50
  51. 51
  52. 52
  53. 53
  54. 54
  55. 55
  56. 56
  57. 57
  58. 58
  59. 59
  60. 60
import SwiftUI


struct LandmarkDetail: View {
    @EnvironmentObject var userData: UserData
    var landmark: Landmark


    var landmarkIndex: Int {
        userData.landmarks.firstIndex(where: { $0.id == landmark.id })!
    }


    var body: some View {
        VStack {
            MapView(landmark: landmark)
                .frame(height: 300)


            CircleImage(image: landmark.image(forSize: 250))
                .offset(y: -130)
                .padding(.bottom, -130)


            VStack(alignment: .leading) {
                HStack {
                    Text(landmark.name)
                        .font(.title)


                    Button(action: {
                        self.userData.landmarks[self.landmarkIndex].isFavorite.toggle()
                    }) {
                        if self.userData.landmarks[self.landmarkIndex].isFavorite {
                            Image(systemName: "star.fill")
                                .foregroundColor(Color.yellow)
                        } else {
                            Image(systemName: "star")
                                .foregroundColor(Color.gray)
                        }
                    }
                }


                HStack(alignment: .top) {
                    Text(landmark.park)
                        .font(caption)
                    Spacer()
                    Text(landmark.state)
                        .font(.caption)
                }
            }
            .padding()


            Spacer()
        }
        .navigationBarTitle(Text(landmark.name), displayMode: .inline)
    }
}

https://developer.apple.com/tutorials/swiftui/handling-user-input

Принципиально новый нескучный "декларативный" UI от компании Apple. В наличии:
* магические константы
* спагетти из замыканий
* биндинги, страшные как атомная война
* где-то внутри модная хипстерская реактивная либа

На фоне этого кошмара qml кажется вершиной инженерной мысли

Desktop Desktop, (Updated )

Комментарии (41, +41)