Ios 如何将CHCSV解析器数组中的值放入领域对象属性中?

Ios 如何将CHCSV解析器数组中的值放入领域对象属性中?,ios,objective-c,realm,Ios,Objective C,Realm,我已经实现了一个CHCSV解析器,它的委托方法为源CSV文件的每一行返回一个名为currentRow的NSMutableArray。如果我在解析一行之后记录数组,我可以看到数组中的文本项被引用,而数字(整数)是裸露的。currentRow的日志输出如下所示:(“紧急需要”,0,0,0,1,”,YES,YES) 好的,我需要将这些值放入一个领域数据对象中,该对象的定义如下: @interface Tile : RLMObject @property NSString *wordKey; @prop

我已经实现了一个CHCSV解析器,它的委托方法为源CSV文件的每一行返回一个名为
currentRow
的NSMutableArray。如果我在解析一行之后记录数组,我可以看到数组中的文本项被引用,而数字(整数)是裸露的。
currentRow
的日志输出如下所示:
(“紧急需要”,0,0,0,1,”,YES,YES)

好的,我需要将这些值放入一个领域数据对象中,该对象的定义如下:

@interface Tile : RLMObject
@property NSString *wordKey;
@property NSInteger pageNum;
@property NSInteger viewNum;
@property NSInteger viewItemNum;
@property NSInteger targetPageNum;
@property BOOL enqueue;
@property BOOL playAudio;
@property NSString *action;
@end
我使用以下代码尝试设置对象的属性:

    [realm beginWriteTransaction];
    [Tile createInRealm:realm withObject:@{@"wordKey": currentRow[0],
                                           @"pageNum": currentRow[1],
                                           @"viewNum": currentRow[2],
                                           @"viewItemNum": currentRow[3],
                                           @"targetPageNum": currentRow[4],
                                           @"action": currentRow[5],
                                           @"enqueue": currentRow[6],
                                           @"playAudio": currentRow[7]}
     ];
    [realm commitWriteTransaction];
运行此代码时,会出现以下异常:

Error adding data object: Invalid value '(0)' for property 'pageNum'
我尝试了几种方法来铸造数组元素,但都没有效果。它似乎毫无怨言地接受第一个属性的字符串数据。我怀疑这是一个简单的解决办法,但我被难住了。非常感谢您的任何想法或评论。

“(0)”是字符串,pageNum是整数。试一试

@([currentRow[1] integerValue]) 
编辑:您的init方法似乎需要一个字典,而字典需要对象。您必须进入该方法的实现并使用它

[object[@"pageNum"] integerValue]

这是我尝试过的事情之一。我得到一个错误
“类型为'NSInteger'(也称为'int')的集合元素不是Objective-C对象。”
您需要将该
NSInteger
包装在一个
NSNumber
中,我让它按照您(和@segiddins)建议的方式工作:
@“pageNum”:[NSNumber numberwhiteger:[currentRow[1]integerValue],
我认为数组中的值是数字而不是字符串(因为文本元素是引用的)。@bluesmoke很高兴听到这个消息,如果我的答案解决了你的问题,你应该将它标记为答案