gpt4 book ai didi

iphone - 检查 NSString 变量的 NSDictionary 值 [NSNull null]

转载 作者:塔克拉玛干 更新时间:2023-11-02 09:09:27 24 4
gpt4 key购买 nike

我正在用 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com