1

私は辞書付きのplistを持っています。
辞書には、画像のURLアドレスを持つ「cellPic」という文字列があります。
テーブルビューに、ドロップボックスアカウントに置いた画像を入力して、plist 文字列から読み取ろうとしています。
(「arrayFromPlist」は私の配列です)
問題は、それを実行すると、コンソールにエラーが表示されることです:
[__NSCFDictionary objectAtIndex:]: unrecognized selector

これは私のコードです:

-(void) readPlistFromDocs
{
    // Path to the plist (in the Docs)
    NSString *rootPath =
[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask, YES) objectAtIndex:0];
    NSString *plistPath = [rootPath stringByAppendingPathComponent:@"Data.plist"];
    NSLog(@"plistPath = %@",plistPath);
    // Build the array from the plist  
    NSMutableArray *arrayFromDocs = [[NSMutableArray alloc] initWithContentsOfFile:plistPath];
if (arrayFromDocs)
{
    NSLog(@"\n content of plist file from the documents \n");
    NSLog(@"Array from Docs count = : %d", [arrayFromDocs count]);
}
    arrayFromPlist = [[NSArray alloc] initWithArray:arrayFromDocs];
}   

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
    return 1;
}

// Returns the number of rows in a given section.
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    return [arrayFromPlist count];
    NSLog(@"Array SIZE = %d",[arrayFromPlist count]);
}

- (UITableViewCell *)tableView:(UITableView *)aTableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"Cell";
    UITableViewCell *cell = [aTableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil)
{
    cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier];
}

NSURL *url = [[NSURL alloc] initWithString:[[arrayFromPlist objectAtIndex:indexPath.row] objectForKey:@"cellPic"]];
NSData *urlData = [[NSData alloc] initWithContentsOfURL:url];
[[cell imageView] setImage:[UIImage imageWithData:urlData]];

return cell;
}

私のもう1つの質問は、plist文字列からURLを読み取るときに、どうすれば画像を非同期にロードできますか?
その例を見つけようとしましたが、plistを使用せずに非同期のみを見つけました。
ありがとう。

4

1 に答える 1

0

次の行を変更

NSDictionary *arrayFromDocs = [[NSDictionary alloc] initWithContentsOfFile:plistPath];

画像を非同期にロードするための最良のチュートリアル

うまくいけば、これはあなたを助けるでしょう..

于 2012-04-28T11:06:53.270 に答える