سؤال

أحاول إدراج محتويات دليل نغمات الرنين في TableView، ومع ذلك، لا أحصل إلا على الملف الأخير في الدليل في جميع الخلايا، بدلاً من الملف لكل خلية.هذا هو الكود الخاص بي:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{
    Profile_ManagerAppDelegate *appDelegate = [[UIApplication sharedApplication] delegate];

    static NSString *CellIdentifier = @"Cell";

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:CellIdentifier] autorelease];
        cell.hidesAccessoryWhenEditing = YES;
    }

    cell.accessoryType = UITableViewCellAccessoryNone;
    //cell.textLabel.text = @"No Ringtones";
    //cell.textLabel.text = @"Test";

    NSString *theFiles;
    NSFileManager *manager = [NSFileManager defaultManager];
    NSArray *fileList = [manager directoryContentsAtPath:@"/Test"];
    for (NSString *s in fileList){
        theFiles = s;
    }
    cell.textLabel.text = theFiles;

    return cell;
}

يتم تحميله بشكل جيد، ولا توجد أخطاء، عندما أستخدمه NSLog فهو يسرد كافة الملفات الموجودة في الدليل على ما يرام.حتى أنني حاولت [s objectAtIndex:indexPath.row] لكنني حصلت كائن في الفهرس: خطأ.هل لدي احد اى افكار؟

هل كانت مفيدة؟

المحلول

تقوم حلقة for الخاصة بك بالتكرار على الملفات وتعيين الملفات على المسار الحالي.لذا، في نهاية الحلقة، ستكون الملفات هي السلسلة الأخيرة في المجموعة.

جرب شيئًا مثل:

cell.textLabel.text = [fileList objectAtIndex:indexPath.row];

نصائح أخرى

أنا في الواقع أحب طرح الأسئلة هنا، لأنه في أقل من 10 دقائق، سأجيب على سؤالي!

هذه هي الطريقة التي حصلت بها على الكود أعلاه للعمل:

NSMutableArray *theFiles;
NSFileManager *manager = [NSFileManager defaultManager];
NSArray *fileList = [manager directoryContentsAtPath:@"/Test"];
for (NSString *s in fileList){
    theFiles = fileList;
}
cell.textLabel.text = [theFiles objectAtIndex:indexPath.row];
return cell;

لقد قمت للتو بتحويل NSString إلى NSMutableArray، وهذا سمح لي باستخدام objectAtIndex.الآن لتقليص امتداد الملف!

يجب عليك إزالة NSString وNSMutableArray والحلقة..الكود النهائي يجب أن يكون هكذا:

NSFileManager *manager = [NSFileManager defaultManager];
NSArray *fileList = [manager directoryContentsAtPath:@"/Test"];
cell.textLabel.text = [fileList objectAtIndex:indexPath.row];
return cell;

راجع للشغل، تم إنشاء قائمة الملفات والمدير هذه بشكل متكرر لكل خلية.لذلك من الأفضل جعله متغيرًا عامًا لـ UITableViewController وتعيين 1 فقط

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top