- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
最近升级了 XCode8 我在 isKindOfClass
中遇到问题这段代码一直有效到 iOS9
的方法但在 iOS10
突然[items isKindOfClass: [NSMutableArray class]]
编译器没有进入 for 循环条件我可以知道是什么原因吗?NSMutableArray
是 NSArray
的子类所以当我更改为 [NSArray class]
那么它工作正常,所以我很困惑为什么这个更改会影响到 NSMutableArray
作为 NSArray
的子类的类?
NSMutableArray *items = [jsonDictionary objectForKey:@"items"]; // Here i am taking response in NSMutableArray
if ([items isKindOfClass: [NSMutableArray class]] && items != nil) // not working {
for (NSMutableDictionary *item in items)
{
// Rest of Code
}
}
iOS9
当我在
iOS10
工作后更改以下代码时:
NSMutableArray *items = [jsonDictionary objectForKey:@"items"];
if ([items isKindOfClass: [NSArray class]] && items != nil) // Changed to NSArray {
for (NSMutableDictionary *item in items)
{
// Rest of Code
}
}
最佳答案
从您的评论看来,您实际上有一个 NSArray
,而不是 NSMutableArray
, 所以 isKindOfClass
工作正常。除非您另行指定,否则 AFN 将提供不可变容器,这在 iOS 10 上应该没有什么不同,所以我不确定它为什么以前可以工作。
与其测试可变数组,不如创建一个可变副本可能更简单,这样您就不必尝试优雅地处理“失败”条件:
NSArray *items = [jsonDictionary objectForKey:@"items"];
if (items != nil) {
NSMutableArray *mutableItems = [items mutableCopy];
for (NSMutableDictionary *item in mutableItems)
{
// Rest of Code
}
}
items
中的字典数组将是
NSDictionary
不是
NSMutableDictionary
,因此您可能需要制作它们的可变副本。
NSArray
和
NSDictionary
不管你是否有一个可变或不可变的对象。
关于ios - iOS10 中 isKindOfClass 面临的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39523642/
如何确定结构是否属于特定类型?换句话说,如果我得到一个对象,我怎么知道底层类型是一个结构体? +(BOOL)isPrimitive:(id)input { return [input isKi
我有一个方法someMethod。此方法在某些时候具有以下 if-else 条件。 - (void) someMethod { // ... some more code ... if
我只想抓取ScrollView中的按钮标签1~5,其他数据不需要抓取 (void)layoutScrollImages { UIImageView *view = nil; NSArr
我有一个无法理解的问题,我正在使用一个用于使用Map Open Source Map(https://github.com/route-me/route-me)的库,该示例运行完美,并且我相信不是与代
我原以为这是一个身份,但它现在似乎对我不起作用。 看我的 lldb 提示符: po [self class] ==> MyCustomClass po [MyCustomClass 类] ==> My
最新版本的 Objective-C 和 XCode (4.4)。 我有一个代码片段,我不明白为什么我可以使用一些行,让我解释一下: // For understanding purpose : (NS
我创建了一个自定义类AnimalView,它是UIView的子类,包含一个UILabel和一个UIImageView >。 @interface AnimalView : UIView { U
我正在检查 toViewController(我的 tabBar 中的第二个选项卡)是否属于 MatchCenterViewController 类,但是 else 语句正在运行,这告诉我它不属于那个
我有一个 ViewController 和一些供用户输入的标签和文本字段,在某些时候我需要遍历所有文本字段以收集用户的输入。 override func viewDidLoad() { sup
我有一个与 Cocoapods (ECSlidingViewController) 一起安装的库。在代码中,比较是使用 -isKindOfClass 完成的。在调试器中,打印描述和一切都表明这个变量是
有没有比更好的方法来查看一个对象是否具有多个类之一 if ([item isKindOfClass:[NSArray class]] || [item isKindOfClass:[NSNumber
引用下面的代码,我发现 isKindOfClass 无法识别类。 id parent = [self.tableDataSource objectAtIndex:indexPath.row]; //p
出于各种原因,为了使数组的索引与其他事物保持一致,我在数组中加入了[NSNull null]。像这样: NSArray *arr = @[obj1, obj2, obj3, [NSNull null]
有人可以解释为什么 isKindOfClass 会根据实例的创建方式返回不同的结果吗? @interface BaseClass ... @interface DerivedClassA : Base
我的一个单元测试失败了,原因出乎我的意料。似乎对 isKindOfClass 的调用返回了 NO,但是当我调试并单步执行时,似乎没有理由返回 NO。 代码是: if ([self.detailItem
我正在做一个 iOS5+ 项目(xcode 4.4.1 SDK 5.1) 我在单元测试中有这段代码: [_appDelegate application:nil didFinishLaunchingW
Swift 提供了is 关键字(和as?)来检查一个对象是否可以成功向下转型: if foo is MyClass { // ... } 但是NSObjectProtocol也提供了原来的fu
Swift 中的 isKind(of aClass: AnyClass) 和 isMember(of aClass: AnyClass) 函数有什么区别? Objective-C 中的原始问题 Wha
最近升级了 XCode8 我在 isKindOfClass 中遇到问题这段代码一直有效到 iOS9 的方法但在 iOS10突然[items isKindOfClass: [NSMutableArray
我有以下代码来根据 rvc 的类型确定不同的操作: let rvc = UIApplication.sharedApplication().delegate.window?.rootViewCont
我是一名优秀的程序员,十分优秀!