0

これに苦労しています。アプリ内で使用する読み取り専用の plist をダウンロードしようとしています...

ただし、辞書の内容を読むのに苦労しています...以下のコード、ポインタは素晴らしいでしょう..

-(void)loadProducts {


NSDictionary *dict = [NSDictionary dictionaryWithContentsOfURL:[NSURL URLWithString:@"https://dl.dropboxusercontent.com/s/f1nmq1wa7gs96dp/Region1Products.plist"]];


for (NSDictionary* productDictionary in dict) {
    ProductItem* productItem = [[ProductItem alloc] init];

    productItem.picturesCount = [productDictionary objectForKey:@"PicturesCount"];
    productItem.maxPicturesCount = [productDictionary objectForKey:@"MaxPicturesCount"];
    productItem.size = [productDictionary objectForKey:@"Size"];
    productItem.previewImageName = [productDictionary objectForKey:@"ImageName"];
    productItem.sequence = [productDictionary objectForKey:@"Sequence"];
    productItem.productName = [productDictionary objectForKey:@"Name"];
    productItem.type = [productDictionary objectForKey:@"ProductType"];
    productItem.prices = [productDictionary objectForKey:@"Prices"];
    productItem.shippingPrices = [productDictionary objectForKey:@"ShippingPrices"];
    productItem.description = [productDictionary objectForKey:@"Description"];
    productItem.popupMessage = [productDictionary objectForKey:@"PopupMessage"];
    productItem.popupDetailMessage = [productDictionary objectForKey:@"PopupDetailMessage"];
    productItem.incrementalPricing = [[productDictionary objectForKey:@"IncrementalPricing"] boolValue];
    if (YES == productItem.incrementalPricing) {
        productItem.incrementalPrices = [productDictionary objectForKey:@"IncrementalPrices"];
    }

    NSArray *previewItems = [productDictionary objectForKey:@"PreviewItems"];
    for (NSDictionary* previewItem in previewItems) {
        [productItem addProductPreviewItemFromDictionary:previewItem];
    }

    [self.productsList addObject:productItem];
}
4

1 に答える 1

1

URL から NSDictionary を作成していますが、その plist の最上位オブジェクトは配列です。これを解決するdictには、NSArray オブジェクトに変更します。これをテストするために、次の簡略化されたコードを使用しました。

NSArray *array = [NSArray arrayWithContentsOfURL:[NSURL URLWithString:@"https://dl.dropboxusercontent.com/s/f1nmq1wa7gs96dp/Region1Products.plist"]];

for (NSDictionary* productDictionary in array) {
    NSLog(@"%@",productDictionary);
}
于 2013-05-25T12:30:35.587 に答える