如何使用plist填充XCode 4中的iOS TableView

时间:2012-06-10 14:12:00

标签: xcode plist nsdictionary tableview cell

  

可能重复:
  How to populate a TableView with plist content using XCode and 4 storyboard

我已经完成了以下步骤:

1:制作了一个tableviewcontroller(WinesViewController)

2:添加了标题为&的原型单元格。字幕标签:namelabel& districtlabel。细胞标识符:wineCell

3:使用10种葡萄酒(词典)制作Wine.plist(词典键=葡萄酒名称)

字典包含18个带字符串键的字符串:名称,区域,图像,酒精等,以及1个名为Price with Price strings的数组。

4:制作了NSObject的Wine.h / .m子类。 .h:

#import <Foundation/Foundation.h>

@interface Wine : NSObject {

    NSString *wineImage;
    NSString *wineName;
    NSString *wineDistrict;
    NSString *wineCountry;
    NSString *wineFlag;
    NSString *wineFylde;
    NSString *wineFriskhet;
    NSString *wineGarvesyre;
    NSString *wineColor;
    NSString *wineSmell;
    NSString *wineTaste;
    NSString *wineSuits;
    NSString *wineGrapes;
    NSString *wineAlcohol;
    NSString *wineSugar;
    NSString *wineAcid;
    NSString *wineProducer;
    NSMutableArray *winePrice;
    NSString *wineFact;
}

@property (copy, nonatomic) NSString *wineImage;
@property (copy, nonatomic) NSString *wineName;
@property (copy, nonatomic) NSString *wineDistrict;
@property (copy, nonatomic) NSString *wineCountry;
@property (copy, nonatomic) NSString *wineFlag;
@property (copy, nonatomic) NSString *wineFylde;
@property (copy, nonatomic) NSString *wineFriskhet;
@property (copy, nonatomic) NSString *wineGarvesyre;
@property (copy, nonatomic) NSString *wineColor;
@property (copy, nonatomic) NSString *wineSmell;
@property (copy, nonatomic) NSString *wineTaste;
@property (copy, nonatomic) NSString *wineSuits;
@property (copy, nonatomic) NSString *wineGrapes;
@property (copy, nonatomic) NSString *wineAlcohol;
@property (copy, nonatomic) NSString *wineSugar;
@property (copy, nonatomic) NSString *wineAcid;
@property (copy, nonatomic) NSString *wineProducer;
@property (retain, nonatomic) NSMutableArray *winePrice;
@property (copy, nonatomic) NSString *wineFact;

@end

并将它们全部合成了wine.m

然后我尝试了Apples Propery List Programming Guide,http://www.raywenderlich.com/5138/beginning-storyboards-in-ios-5-part-1中的不同代码组合以及此处的答案,用plist中的Name和District字符串填充tableview单元格作为title / subtile。现在我创造了一个混乱并使自己感到困惑,我甚至不想从WinesViewController.h / .m发布代码。最好重新开始。

稍后我也会添加图像,并使用plist中的其余信息来创建WinesDetailViewController,但是使tableView似乎足以开始..有人可以帮我吗?

我希望葡萄酒在桌面视图中显示a-z,只有1个部分开始,之后我会添加部分。首先,我需要完成这个地面结构!

1 个答案:

答案 0 :(得分:1)

最简单的方法是使用:

NSDictionary* wines = [NSDictionary dictionaryWithContentsOfURL:<URL to plist file>];

这将创建一个包含plist中所有内容的字典。然后,您可以单步执行字典的键(这将是葡萄酒的名称),如下所示:

NSEnumerator* keyEnum = [wines keyEnumerator];
NSDictionary* nextWine = nil;
while ((nextWine = [keyEnum nextObject]) != nil)
{
    // pull out the data for each wine, such as its image, district, country, etc. and
    // put them into your model object.
}