Я не был уверен, как сформулировать этот вопрос, но я надеюсь, что вы сможете помочь.Как совместить два значения из массива NSObject? (Obj c)
У меня есть объект книги. Каждая книга имеет заголовок, строку идентификатора и логическое значение для того, было ли оно прочитано. Я могу получить значения каждого заголовка, строки идентификатора и логического значения отдельно, но я не могу понять, какая книга принадлежит логической. Все данные содержатся в файле BookDataController в виде массивов. Булево значение сохраняется в nsuserdefaults.
@interface Book : NSObject
@property (nonatomic, strong) NSString *title;
@property (nonatomic, strong) NSString *readIDString;
@property BOOL hasRead;
@end
Вот код, я использую, чтобы получить значения массивов:
NSMutableArray *dataSource;
dataSource = _bookDataController.bookInfoArray;
NSArray *bookTitles = [dataSource valueForKey:@"title"];
NSLog(@"DataSource Title: %@", bookTitles);
(Возврат: [ "title1", "title2", «title3, и т.д.])
NSArray *titlesRead = [dataSource valueForKey:@"hasRead"];
NSLog(@"DataSource Bool: %@", titlesRead);
(Возвращает: [ложь, ложь, правда, и т.д.])
NSArray *readIDs = [dataSource valueForKey:@"readIDString"];
NSLog(@"DataSource ReadID: %@", readIDs);
(Returns: [ "id1", "id2", "id3", и т.д.])
Я знаю, что я могу получить значения всех ключей, сохраненных в NSUserDefaults как так:
NSArray *keys = [[[NSUserDefaults standardUserDefaults] dictionaryRepresentation] allKeys];
for(NSString *key in keys)
{
NSLog(@"value: %@ forKey: %@", [[NSUserDefaults standardUserDefaults] valueForKey:key], key);
}
Но это возвращает все виды умолчаний, которые используются во всем приложении, а не в каком-либо упорядоченном порядке, который я могу сказать.
Итак, мой вопрос заключается в следующем: как я могу выйти из значений каждой книги, чтобы получить заголовки, которые идут с правильными логическими значениями? Это возможно?
(Пример: «Название книги»: ложь, «Название книги»: правда, и т.д.)
Теперь, когда я печатаю это, это выглядит как словарь! Но я не знаю, как это сделать. На Stack Overflow прошло несколько дней, чтобы получить текущие вызовы с помощью NSArray, как есть! Это должно указывать на мой уровень понимания на данном этапе. :)
еще лучше, теперь, когда я думаю об этом еще немного, я хотел бы вернуться вместо этого:
("id1" ложь "id2" ложь "id3": правда, и т.д.)
(Оба вызова будет великолепно!)
Пожалуйста, скажите мне, если мне нужно уточнить что-либо, или если вам нужно больше кода. Большое спасибо, всем!
Вам нужно сохранить объекты 'Book', а не просто отдельные массивы. Вы можете использовать 'NSKeyedArchiver', но, честно говоря, вы должны использовать Core Data, а не рассматривать« NSUserDefaults »как хранилище данных. – Paulw11
Благодарим вас за ответ. Я начал пару учебников по Core Data, но он все еще немного выше моей головы. Однако я буду упорствовать! В этот момент только логические значения сохраняются в nsuserdefaults, и вся другая информация вызывается из файла данных. Я просто хотел иметь возможность выходить на консоль. Все это отлично работает в моем столе. Это другой процесс в том, как код добавляется в tableview и как мне нужно его вызвать, чтобы увидеть его в консоли. Вот что я, кажется, не могу обернуть вокруг себя. – IWannaLearn
Вы хотите вернуть id, title и boolean, где читается книга ИЛИ boolean - true. @IWannaLearn Право? Если это тогда, я отправлю свой код –