And*_*e C 1 objective-c uitableview
我试图用plist文件填充我的tableview.
plist文件如下:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<array>
<dict>
<key>Rows</key>
<array>
<string>A</string>
<string>B</string>
<string>C</string>
<string>D</string>
</array>
</dict>
</array>
</plist>
Run Code Online (Sandbox Code Playgroud)
我用以下方法填充我的数组:
NSString *path = [[NSBundle mainBundle] pathForResource:@"Test" ofType:@"plist"];
NSArray *array = [[NSArray alloc] initWithContentsOfFile:path];
self.namesArray = [array valueForKey:@"Rows"];
Run Code Online (Sandbox Code Playgroud)
当我记录plist的内容时,我得到:
(
(
A,
B,
C,
D
)
)
Run Code Online (Sandbox Code Playgroud)
但是,我的部分行数似乎从该数组返回1.
我还记录了数组计数,它只返回1,我认为是我的问题.
这是因为存在是阵列中的一个元件-另一个阵列.
你想要做的是调用-count数组中的第一个元素:
NSUInteger count = [[array objectAtIndex:0] count];
Run Code Online (Sandbox Code Playgroud)
将来,当您拥有具有相似结构的阵列时,您可能需要事先考虑展平它们.我写了一个关于NSArray那个的类别(未经测试):
@interface NSArray (JRAdditions)
- (NSArray *) flattenedArray;
@end
@implementation NSArray (JRAdditions)
- (NSArray *) flattenedArray {
if([self count] == 0) return nil;
NSMutableArray *flattened = [NSMutableArray arrayWithCapacity:[self count]];
for(id object in [self copy]) {
@autoreleasepool {
if([object isKindOfClass:[NSArray class]]) {
[flattened addObjectsFromArray:[object flattenedArray]]; //recursive call
} else {
[flattened addObject:object];
}
}
}
return [NSArray arrayWithArray:flattened];
}
@end
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
90 次 |
| 最近记录: |