Vì một lý do nào đó, tất cả thuộc tính đã nhập NSString đang được trả về dưới dạng NSArrays trong đối tượng Bài viết của tôi. Đây là chức năng của tôi để lấy chúng: Dữ liệu chính trả về NSArrays thay vì NSStrings
- (NSArray *)getSavedArticles
{
NSFetchRequest *fetchRequest = [[[NSFetchRequest alloc] init] autorelease];
NSError *error = nil;
NSEntityDescription *entity = [NSEntityDescription
entityForName:@"Article" inManagedObjectContext:[self managedObjectContext]];
[fetchRequest setEntity:entity];
NSSortDescriptor *dateSort = [NSSortDescriptor sortDescriptorWithKey:@"last_opened" ascending:NO];
[fetchRequest setSortDescriptors:[NSArray arrayWithObject:dateSort]];
NSArray *fetchedObjects = [[self managedObjectContext] executeFetchRequest:fetchRequest error:&error];
return fetchedObjects;
}
Tôi đã không tạo ra một NSManagedObjectModel cho những điều này, và thay vào đó tôi chỉ truy cập chúng bằng cách sử dụng KVO.
//self.data has the array returned from getSavedArticles
NSManagedObject *object = [self.data objectAtIndex:indexPath.row];
NSString *path = [object valueForKey:@"path"];
NSString* id = [object valueForKey:@"id"];
Khi tôi xem xét điều này trong cửa sổ biến, trên path
và id
tôi thấy (__NSArrayI *) ... Variable is not a CFString.
In mô tả của một trong những cũng in ra ngoặc sử dụng khi in mảng.
Tôi chỉ tự hỏi liệu điều này có thể là do bộ mô tả sắp xếp không? Tôi đã kiểm tra kỹ xem dữ liệu đi vào các đối tượng này có được nhập chính xác hay không và cơ sở dữ liệu SQLite mà tôi đang sử dụng để sao lưu mọi thứ đang hiển thị chuỗi.
Tôi đã thử cài đặt lại ứng dụng trong trình mô phỏng và đặt lại ứng dụng. Tôi vẫn nhận được một NSArray thay vì một NSString.
Tôi thực sự không biết điều gì đang xảy ra ở đây. Bất kỳ trợ giúp sẽ được đánh giá cao.
CHỈNH SỬA: Tôi vừa tìm thấy điều gì đó thú vị khác. Tôi thực hiện một kiểm tra khác để xem một Điều đã được lưu chưa, và lần này tôi không nhận được NSArray cho đường dẫn bài viết:
- (NSString *)hasArticleSaved:(NSString *)id
{
NSString *path = nil;
NSFetchRequest *fetchRequest = [[[NSFetchRequest alloc] init] autorelease];
[fetchRequest setPredicate:[NSPredicate predicateWithFormat:@"%K == %@", @"id", id]];
NSEntityDescription *entity = [NSEntityDescription
entityForName:@"Article" inManagedObjectContext:[self managedObjectContext]];
[fetchRequest setEntity:entity];
NSError *error = nil;
NSArray *fetchedObjects = [[self managedObjectContext] executeFetchRequest:fetchRequest error:&error];
if (fetchedObjects.count > 0) {
NSManagedObject *savedArticle = [fetchedObjects objectAtIndex:0];
path = [savedArticle valueForKey:@"path"];
}
return path;
}
Bây giờ tôi thực sự bối rối. Có ai không?
Rất tiếc! Đó là một lỗi đánh máy trong câu hỏi. Tôi đang sử dụng objectAtIndex. Đang sửa ngay bây giờ. – MishieMoo
Vâng, tôi đã tự hỏi làm thế nào mà thậm chí biên dịch. – TechZen