ios - মূল মান অনুসারে ডিকোচারের অ্যারে বাছাই করুন



arrays swift (4)

'$' /// আইটেমগুলি অভিধানের অ্যারে / *

let items: [[String: Any]] = [
   ["itemName":"ZZ_Item", "itemDescription":"Homer"],
   ["itemName":"AA_Item", "itemDescription":"Marge"],
   ["itemName":"VV_Item", "itemDescription":"Bart"],
   ["itemName":"BB_Item", "itemDescription":"Lisa"],
   ["itemName":"XY_Item", "itemDescription":"Maggie"],
   ["itemName":"CC_Item", "itemDescription":"Ned"]
]
print(items)

* / /// ও / পি আন_সোর্টার্ড অ্যারে

/// [["আইটেমনাম": "জেডজেড_আইটেম", "আইটেম বিবরণ": "হোমার"], ["আইটেম নাম": "এএ_ আইটেম", "আইটেম ডেসক্রিপশন": "মার্জ"], ["আইটেমনাম": "ভিভি_আইটেম", " আইটেমডেসক্রিপশন ":" বার্ট "], [" আইটেমনেম ":" বিবি_আইটেম "," আইটেমস বিবরণ ":" লিসা "], [" আইটেমনেম ":" এক্সওয়াই_আইটেম "," আইটেম বিবরণ ":" ম্যাগি "]," "আইটেম নাম": " সিসি_ আইটেম "," আইটেম বিবরণ ":" নেড "]]

আইটেম নাম কী দ্বারা সাজানোর অ্যারে ///

func itemsSort(p1:[String:Any], p2:[String:Any]) -> Bool {
    guard let s1 = p1["itemName"] as? String, let s2 = p2["itemName"] as? String else {
        return false
    }
    return s1 < s2
}

let sortedItemsArray = items.sorted { itemsSort(p1:$0, p2:$1) }
print(sortedItemsArray)

//// O / P সাজানো অ্যারে

[["আইটেমনাম": "এএ_ আইটেম", "আইটেম ডেসক্রিপশন": "মার্জ"], ["আইটেমনাম": "বিবি_আইটেম", "আইটেম ডেসক্রিপশন": "লিসা"], ["আইটেমনেম": "সিসি_ আইটেম", "আইটেমের বিবরণ": "নেড"], ["আইটেমনাম": "ভিভি_আইটেম", "আইটেম বিবরণ": "বার্ট"], ["আইটেমনাম": "এক্সওয়াই_ আইটেম", "আইটেম বিবরণ": "ম্যাগি"], ["আইটেমনাম": "জেডজেড_ আইটেম", "আইটেমের বিবরণ": "হোমার"]]

আমার কাছে অভিধানের একটি অ্যারে রয়েছে এবং আমি প্রতিটি অভিধানে "আইটেমনেম" কী দ্বারা তাদের বর্ণমালা অনুসারে বাছাই করতে চাই। আমি কীভাবে সুইফটে এটি করতে পারি?

আমি আইটেম অ্যারে বাছাই করতে চাই।

let array = PFUser.currentUser()?.objectForKey("Collections") as! [[String : AnyObject]]
        let collectionsDictionary = array[0]
        itemsArray = collectionsDictionary[self.title!] as! [[String : AnyObject]]


        for dictionary in itemsArray {
            itemNames.append(dictionary["itemName"] as! String)
            itemUPC.append(dictionary["UPC"] as! String)
            pricePaid.append(dictionary["pricePaid"] as! String)
            currentPrice.append(dictionary["currentPrice"] as! String)
            model.append(dictionary["model"] as! String)
            if (dictionary["image"] != nil) {
                imagesArray.append(dictionary["image"] as! PFFile)
            } else {
                imagesArray.append(nil)
            }
        }

আপনি sortUsingDescriptors কার্যকারিতাটি অবলম্বন করতে পারেন:

let sortedArray = (itemsArray as NSArray).sortedArrayUsingDescriptors([NSSortDescriptor(key: "itemName", ascending: true)]) as [[String:AnyObject]]

সুইফট> 3

let sortedArray = (itemsArray as NSArray).sortedArray(using: [NSSortDescriptor(key: "itemName", ascending: true)]) as! [[String:AnyObject]]

খুব সুইফট-ইশ নয় এবং আপনি প্রকারের সুরক্ষাটি হারাচ্ছেন তবে এটি কাজ করে।

এবং বিটিডব্লিউ, আপনার কোডে আপনার কাছে প্রচুর জোরপূর্বক ক্যাসেট রয়েছে, এতে আপনার অ্যাপ্লিকেশনটি বিধ্বস্ত হওয়ার সম্ভাবনা রয়েছে, পরিবর্তে আপনাকে optionচ্ছিক বিষয়ে স্যুইচ করা বিবেচনা করা উচিত।


এটি আমার পক্ষে কাজ করেছে:

let descriptor: NSSortDescriptor = NSSortDescriptor(key: "itemName", ascending: true)
let sortedResults: NSArray = favArray.sortedArray(using: [descriptor]) as NSArray

বাছাই করে সম্ভবত এই জাতীয় কিছু:

let sortedArray = itemsArray.sort { $0["itemName"] < $1["itemName"] }

যেখানে "$ 0" এবং "$ 1" যথাক্রমে অ্যারেতে প্রতিটি অভিধান এবং এর উত্তরসূরি উপস্থাপন করে।

যদি সংকলক প্রকারগুলি সম্পর্কে অভিযোগ করে কারণ এটি জানেন না যে এই কীটির মান একটি স্ট্রিং, আপনি এটির মতো কাস্ট করতে পারেন (মন্তব্যগুলিতে ক্রিশ্চিক বলেছেন):

let sortedArray = itemsArray.sort { ($0["itemName"] as? String) < ($1["itemName"] as? String) }




dictionary