সুইফট

সুইফট প্রোগ্রামিং এর চিটশিট

কনসোলে ইনপুট/ আউটপুট

Link
  • ইনপুট নেয়া

    let input = readLine()
  • আউটপুট দেয়া

    print(output)

স্ট্রিং

Link
  • স্ট্রিং ইন্টারপোলেশন

    let str = "This is some \(value)"
  • স্ট্রিং এর লেন্থ বের করা

    str.count
  • স্ট্রিং এর i তম ইনডেক্সের মান বের করা

    str[ str.index(str.startIndex, offsetBy: i) ]
  • নতুন স্ট্রিং অ্যাপেন্ড করা

    str.append(newString)
  • লোয়ারকেস করা

    str.lowercased()
  • আপারকেস করা

    str.uppercased()

অ্যারে

Link
  • নতুন অ্যারে তৈরি

    var array = [TYPE]()
  • অ্যারে লেন্থ

    array.count
  • i তম ইনডেক্সের মান বের করা

    array[i]
  • অ্যারেতে কোন মান আছে কিনা চেক করা

    array.contains(value)
  • অ্যারের কোন ইলিমেন্টের ইনডেক্স বের করা

    let i = array.firstIndex(of: value) অপশনাল রিটার্ন করবে, কারণ value অ্যারেতে নাও থাকতে পারে!
  • সর্ট করা (অ্যাসেন্ডিং অর্ডার)

    array.sorted()
  • সর্ট করা (ডিসেন্ডিং অর্ডার)

    array.sort { $0 > $1 }

অপশনাল

Link
  • ফোর্স আনর‍্যাপ করা (আনসেইফ)

    let unwrapped = optionalVar!
  • nil কোলেসিং, অপশনালে nil পাওয়া গেলে ডিফল্ট মান দেয়া

    let responseCode = code ?? 404
  • সেইফ আনর‍্যাপিং

    উদাহরণ ১ - if let unwrapped = optVar { // do something} উদাহরণ ২ - guard let unwrapped = optVar else { return }
  • guard let এবং if let এর তফাৎ

    guard let যে ব্লকে থাকে, nil পেলে সে ব্লক এক্সিট করে। if let ব্লক এক্সিট করে না। অপশনালের মান বাদে যদি ব্লকের কাজ না হয় তাহলে guard let ব্যবহার করাই উত্তম।

ডিকশনারি

Link
  • তৈরি করা

    var dict = [KeyType: ValueType]()
  • ডিকশনারি ইলিমেন্ট যোগ করা

    dict[key] = value
  • ইলিমেন্ট বাদ দেয়া

    dict.removeValue(forKey: key)
  • খালি করে দেয়া

    dict.removeAll

JSON ডিকোড করা

Link
  • JSONDecoder দিয়ে ডিকোড করা - ১

    struct হিসেবে মডেল টাইপ বানাতে হবে
  • JSONDecoder দিয়ে ডিকোড করা - ২

    do { let json = try JSONDecoder().decode(ModelStruct.self, from: data) } catch {}

নেটওয়ার্কিং বেসিক্স

Link
  • GET

    URLSession.shared.dataTask(with: url) { (data, response, error) in  print(data) }
  • রিমোট URL থেকে ইমেজ লোড করা

    DispatchQueue.global().async { guard let imageData = try? Data(contentsOf: imageURL) else { return }; let image = UIImage(data: imageData) }

SwiftUI এর টুকিটাকি

Link
  • একটা ভিউতে কয়টা সাবভিউ থাকবে?

    একটা ভিউ থেকে একটাই সাব ভিউ রিটার্ন করা যাবে। এর বেশি চাইলে নেস্টেড চিলড্রেন হিসাবে রিটার্ন করতে হবে।
  • ইমেজে গোলাকার ফ্রেম দেয়া

    Image(image).clipShape(Circle())
  • গোলাকার ফ্রেমে ওভারলে দেয়া

    উদাহরণঃ ২ উইডথের গ্রে ওভারলে- Image(image).clipShape(Circle()).overlay(Circle().stroke(Color.gray, lineWidth: 2))
  • দুই ভিউ এর মাঝে সম্পূর্ণ ফাঁকা জায়গা ব্ল্যাংক স্পেস হিসেবে ইউস করা

    Spacer()
  • ভিউ কেমন স্পেস খাবে সেজন্য প্রায়োরিটি সেট করা

    layoutPriority(priority) ডিফল্ট ভ্যালু হচ্ছে 0, কোন ভিউকে ডমিনেন্টলি দেখাতে চাইলে: 1, কোন কারণে স্ক্রিনে স্পেস কমে গেলে ডমিনেন্ট ভিউ বাদে বাকিগুলো ক্লিপ করে দিবে
  • সেইফ এরিয়া ইগনোর করে পুরো স্ক্রিন জুড়ে ভিউ সেট করা

    .edgesIgnoringSafeArea(.all)
  • ভিউ রোটেট করা

    Text("Up we go!").rotationEffect(.degrees(angle))
  • বর্ডার দেয়া

    উদাহরণ লাল বর্ডার - .border(Color.red, width: 4)

SwiftUI - Image

Link
  • ইমেজ নেম থেকে লোড করা

    Image("hello_world ")
  • ইমেজে সিস্টেম আইকন ইউস করা

    Image(systemName: "cloud.heavyrain.fill")
  • ইমেজে স্টাইল যোগ করা

    Image("hello_world").resizable().aspectRatio(contentMode: .fill).padding(.bottom)

SwiftUI - লে আউট

Link
  • VStack - ভার্টিকালি সাজানো

    VStack {Text("Hello"); Text("World")}
  • HStack - হরাইজন্টালি সাজানো

    HStack {Text("Hello"); Text("World")}
  • ZStack - ওভারল্যাপ

    ZStack {Image("hello"); Text("World")}

SwiftUI - State, ObservedObject এবং EnvrioonmentObject

Link
  • কাজ কি?

    সবগুলোই অবজার্ভার প্যাটার্ন ফলো করে। ডাইনামিক বাইন্ডিং এ ব্যবহার করা যায়।
  • পার্থক্য

    পার্থক্য স্কোপে আর কি ধরণের ডেটার সাথে ব্যবহার করা যায় তার ওপর। State -> ভিউ অনলি স্কোপ, প্রিমিটিভ/ সিম্পল টাইপ ইউস করা যায়। ObservedObject -> কাস্টম টাইপ ইউস করা যায়, এবং এক ভিউ থেকে আরেক ভিউ তে ডেটা পাস করতেও ইউস করা যায়( টু ওয়ে বাইন্ডিং)। EnvironmentObject -> পুরো অ্যাপ্লিকেশন স্কোপে ইউস করা যায়, সিম্পল বা কাস্টম দুই টাইপের সাথেই ইউস করা যায়।

SwiftUI - ভিউ লাইফ সাইকেল

Link
  • যখন ভিউ লোড হয়

    onAppear()
  • ভিউ যখন ডিসকার্ড হয়

    onDisappear()