- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在用 xmlWriter 创建一个 XML,我在一个 NSDictionary 中有一些值,它有几个键/值对,但是其中一些值是 [NSNull null],我将每个值传递到它自己的 NSString。
在我的 XMLWriter 方法中,我有一个 if 语句来检查这是否是对数据库的特定方法调用,如果是,那么我只想为不相等的 NSString 变量创建 writeAttributes [NSNull null]。
我不确定如何动态检查每个变量。我想也许我可以做一个 if 语句,但那是行不通的,因为一旦其中一个变量不等于 [NSNull null],它就会跳转当 xml 可能需要更多变量时,从 XMLWritter 的这一部分中退出。
这是我的失败想法,所以你明白我想做什么
// Method Params --->
- (NSMutableData *) addMethodParams
{
//allocate serializer (this is using the xmlWriter class)
id <XMLStreamWriter> xmlWriter = [[XMLWriter alloc] init];
[xmlWriter writeStartElement:@"Eng"];
[xmlWriter writeStartElement:@"Parameters"];
[xmlWriter writeStartElement:@"Vars"];
if ([methodName isEqualToString:@"SeriesSearch"]) // name of method currently being requested
{
if ((NSNull *) Series != [NSNull null]) { // if this is null then its jumped
[xmlWriter writeAttribute:@"Code" value:Series];
}
else if ((NSNull *) IDSeries != [NSNull null]){ //if this is !null then it enters the if statement however it then will jump out and not check over any of the other if statments
[xmlWriter writeAttribute:@"ManufacturerID" value:IDSeries];
}
//..
}
[xmlWriter writeEndElement];
[xmlWriter writeEndElement];
[xmlWriter writeEndElement];
所以问题是我如何将具有值的变量添加到我的 xml 中并停止为 null 的变量?创建我猜是一种动态 xml 编写器。
最佳答案
通常,当您不得不多次(甚至不止一次)编写相同的代码时,您应该考虑创建一个方法或函数。所以你可以写一个这样的方法:
- (void)writeAttribute:(NSString *)name ifNonNullValue:(id)value toWriter:(id<XMLStreamWriter>)writer {
if (value != [NSNull null]) {
[writer writeAttribute:name value:value];
}
}
并像这样使用它:
[self writeAttribute:@"Code" ifNonNullValue:Series toWriter:xmlWriter];
[self writeAttribute:@"ManufacturerID" ifNonNullValue:IDSeries toWriter:xmlWriter];
...
您还可以考虑向 XMLWriter
添加一个类别。类别允许您将自己的方法添加到任何类。所以你可以像这样添加一个类别:
// XMLWriter+NonNull.h
#import "XMLWriter.h"
@interface XMLWriter (NonNull)
- (void)writeAttribute:(NSString *)name ifNonNullValue:(id)value;
@end
// XMLWriter+NonNull.m
@implementation XMLWriter (NonNull)
- (void)writeAttribute:(NSString *)name ifNonNullValue:(id)value {
if (value != [NSNull null]) {
[self writeAttribute:name value:value];
}
}
@end
并像这样使用它:
// At top of file
#import "XMLWriter+NonNull.h"
...
[xmlWriter writeAttribute:@"Code" ifNonNullValue:Series];
[xmlWriter writeAttribute:@"ManufacturerID" ifNonNullValue:IDSeries];
...
关于iphone - 检查 NSString 变量的 NSDictionary 值 [NSNull null],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11642156/
我遇到内存管理问题,无法在 iOS 上解决问题。我正在从 SQLite 数据库获取数据,其中某些单元格可能为空。因此,为了处理这种情况,如果为空,我将 [NSNull null] 分配给我的收件人,如
在我们的项目中,当网络上有东西返回 JSON 时,我们的 iPhone 应用程序偶尔会崩溃,其中包含 nil。当然,我们确实有一个帮助类,它负责处理此类问题。然而,人们很容易出错,并且确实在 NSDi
在苹果的例子中我看到了这个: myController *controller = [viewControllers objectAtIndex:page]; if ((NSNull *)contro
我在尝试显示标签时收到 [NSNull rangeOfCharacterFromSet:]: 异常。错误显示 'NSInvalidArgumentException', reason: '-[NSNu
我有一个简单的 NSMO,它有一个关系字段。有时我需要删除关系但保留对象。这是对象,它与 Person 具有一对一关系(person 与 LineUp 具有一对多关系): @objc (LineUp)
赏金事件只剩一天了! 您能否让自定义动画属性与 UIView animateWithDuration block 语法一起使用? 我一直致力于为自定义 CALayer 上的自定义动画属性创建我自己的隐
我正在尝试将字符串设置为“如果 [object objectForKey@"display_name"] 为 NULL,则不显示名称”。它在日志中崩溃了 2011-06-16 10:58:36.251
是否有可能让 Core Data 允许分配 NSNull?我正在使用 JSONKit它默认分配 NSNull。我希望能够像这样进行反序列化: - (void)deserialize:(NSDictio
针对iOS应用进行编码,我发现有潜在的原因禁止继承NSNumber,NSNull,... blabla。 如果我尝试这样做,编译器不会失败,但是运行会立即崩溃,而没有任何使用信息,有人知道原因吗? 最
我在错误消息中收到了以上内容。 [NSNull getCharacters:]: 我在文档中找不到它。谁能给我解释一下这是什么意思? 非常感谢。 编辑:这与链接到的关于 NSNull getChara
当使用键值编码在 NSArrays 上使用集合运算符(例如 @min、@max)时,如果出现以下情况之一,我会得到一个异常数组中的值为 NSNull null。 在使用 valueForKeyPath
我在以前的开发人员离开后转移到的项目中有以下 block NSObject *object = (NSObject *)string; if([object isEqual:[NSNull null]
我有一个循环,第一次运行良好,但第二次运行时我得到: -[NSNull count]: unrecognized selector sent to instance 0x3a094a70 *** T
if let action = self.info?["action"] { switch action as! String { .... } } else {...
我有一个这样结构的数组, [ { "Id": 20, "Name": "Name String", "Email
我实际上是在尝试在 Xcode8.1 上使用 Swift3 解析 Json 对象。这是我的代码: if let objData = objJson["DATA"] as! NSDictionary?
allItems是 NSMutableArray当用户单击加号按钮时,方法 createItem被叫。我试图只为每个偶数索引添加对象(类 BNRItem ),所以我尝试放置 NSNull 的实例对于奇
我的 iPhone 应用程序崩溃,出现以下错误: [724:95876] *** Terminating app due to uncaught exception 'NSInvalidArgumen
我有可能包含对象的 JSON 响应。在我的模型对象中,我这样做: _price3 = self.serverData[@"price3"]; 我想做类似的东西: _price3 = self.se
我遇到了这个异常,但我无法找出问题所在。 我尝试添加异常断点和符号断点,但它没有显示任何更有用的数据。它在 main.h 返回时崩溃,回溯中没有任何内容 这是异常(exception): 20
我是一名优秀的程序员,十分优秀!