Theo chủ đề, làm thế nào tôi có thể kiểm tra xem một đối tượng là một NSArray hoặc NSDictionary?Kiểm tra xem một đối tượng là một NSArray hoặc NSDictionary
Trả lời
if([obj isKindOfClass:[NSArray class]]){
//Is array
}else if([obj isKindOfClass:[NSDictionary class]]){
//is dictionary
}else{
//is something else
}
Hãy thử
[myObject isKindOfClass:[NSArray class]]
và
[myObject isKindOfClass:[NSDictionary class]]
Cả hai phải trả lại giá trị BOOL. Đây là sử dụng cơ bản của phương pháp NSObject:
-(BOOL)isKindOfClass:(Class)aClass
Đối với một chút biết thêm thông tin, xem câu trả lời này ở đây: In Objective-C, how do I test the object type?
Hãy xem xét trường hợp khi bạn đang phân tích dữ liệu từ một JSON hay XML phản ứng. Tùy thuộc vào thư viện phân tích cú pháp bạn đang sử dụng, bạn có thể không kết thúc với NSArrays hoặc NSDictionaries. Thay vào đó bạn có thể có __NSCFArray hoặc __NSCFDictionary.
Trong trường hợp đó, cách tốt nhất để kiểm tra xem bạn có một mảng hoặc một cuốn từ điển là để kiểm tra xem nó phản ứng với một chọn mà chỉ có một mảng hoặc từ điển sẽ đáp lại:
if([unknownObject respondsToSelector:@selector(lastObject)]){
// You can treat unknownObject as an NSArray
}else if([unknownObject respondsToSelector:@selector(allKeys)]){
// You can treat unknown Object as an NSDictionary
}
Chỉ trong trường hợp bất cứ ai đến muộn để bên này tìm kiếm một Swift tương đương, ở đây bạn đi. Đó là rất nhiều thanh lịch hơn so với phiên bản Objective-C, IMHO, bởi vì không chỉ có khả năng kiểm tra các loại, nhưng nó phôi họ loại mong muốn cùng một lúc:
if let arrayVersion = obj as? NSArray {
// arrayVersion is guaranteed to be a non-`nil` NSArray
} else if let dictionaryVersion = obj as? NSDictionary {
// dictionaryVersion is guaranteed to be a non-`nil` NSDictionary
} else {
// it's neither
}
- 1. Kiểm tra xem đối tượng là một số hoặc boolean
- 2. Kiểm tra xem một đối tượng là một Enum
- 3. Kiểm tra xem có phải là một đối tượng
- 4. Cách kiểm tra xem NSArray có chứa đối tượng của một lớp cụ thể không?
- 5. Làm thế nào để kiểm tra xem một biến hoặc đối tượng là không xác định?
- 6. Cách kiểm tra xem đối tượng đã cho là đối tượng hoặc Mảng trong chuỗi JSON
- 7. Cách kiểm tra xem đối tượng có phải là một mảng của một loại nhất định
- 8. ios kiểm tra xem NSArray == null
- 9. Kiểm tra xem một thể hiện của một đối tượng là chỉ đọc
- 10. Kiểm tra xem một đối tượng tồn tại trong VBScript
- 11. Kiểm tra xem một đối tượng có tồn tại
- 12. Encode NSArray hoặc NSDictionary sử dụng NSCoder
- 13. NSPredicate kiểm tra NSArray nếu đối tượng có một số ID
- 14. Kiểm tra xem một đối tượng có phải là một mảng nguyên thủy Java trong Clojure
- 15. Python: kiểm tra xem một đối tượng có phải là một chuỗi
- 16. Giải mã JSON để NSArray hoặc NSDictionary
- 17. Kiểm tra xem đó là đối tượng cửa sổ
- 18. Cách tốt nhất để sắp xếp một NSArray của các đối tượng NSDictionary?
- 19. Làm thế nào để kiểm tra xem một đối tượng là một đối tượng máy phát trong python?
- 20. Kiểm tra xem một yêu cầu là GET hoặc POST
- 21. NSDictionary đến NSArray?
- 22. Đối tượng yếu trong một NSDictionary?
- 23. Chuyển đổi NSArray thành NSDictionary
- 24. Kiểm tra xem đối tượng Ruby có phải là Boolean
- 25. NSDictionary Vs. NSArray
- 26. Kiểm tra xem thể hiện NSString có được chứa trong một NSArray
- 27. Kiểm tra nếu một đối tượng là NSInteger
- 28. Để kiểm tra xem một đối tượng có trống không hoặc không
- 29. python 3: cách kiểm tra xem đối tượng có phải là một hàm không?
- 30. Mongoose: kiểm tra xem đối tượng có phải là đối tượng mongoose
-1 Nhiều đối tượng có thể đáp ứng cho cùng một bộ chọn, đặc biệt là một cái gì đó như chung chung như 'lastObject' hoặc' allKeys'. Sử dụng 'isKindOfClass:' rõ ràng là cách để đi khi giao dịch với các nhóm lớp như 'NSArray' và' NSDictionary'. – Calrion
Câu trả lời đó là vô nghĩa. [myObject isKindOfClass: [lớp NSArray]] trả lời đúng câu hỏi "myObject sẽ hoạt động như thể nó là một NSArray", và đó là những gì bạn muốn. Không có bộ chọn nào chỉ có một NSArray hoặc NSDictionary sẽ trả lời. Trong hai phút, tôi có thể tạo một lớp với các phương thức ví dụ "allKeys" và "lastObject". Hoặc thêm "allKeys" làm phương thức danh mục cho NSArray. – gnasher729