سوال درمورد نحوه قرار دادن سرچ باکس در لیست ویو پروژه نوت آنلاین.
سلام استاد.
در پروژه نوت که اطلاعات رو توسط json دریافت میکردید. اگه بخوایم در tableview یک سرچ بار قرار بدیم چطور باید از اطلاعات موجود در tableview استفاده کنیم ؟
چون من آموزش های توی سایت های خارجی رو نگاه کردم دیدم اکثرا اطلاعات رو توسط یک آرایه به tableview میدند و از همون آرایه برای فیلتر کردن مورد سرچ شده استفاده میکنند. ولی ما اینجا با json اطلاعات رو دریافت میکنیم. البته میشه در حلقه ای که اطلاعات append میشوند در لیست ویو همزمان در یک آرایه هم قرارشون داد ولی آیا راه درستش این هست؟ آیا میشه اطلاعات داخل tableview را مستقیما فیلتر کرد؟
لطفا در این خصوص بنده رو راهنمایی فرمایید.
با تشکر.
سلام ،
یک EditText بالای صفحه قرار بدید و طبق آموزش ها هر زمان که کارکتری در آن وارد شدن دستوری را به جهت سرچ در آرایه ایجاد شده از جیسون بدهید .
استاد آرایه ای که من جیسون رو داخلش میریزم به این صورته :
var newEntryDictionary = [String:String]()
که به این صورت اطلاعات رو در حلقه for record in records داخلش میریزم:
note.intime = record["time"] as! String? // اینجا مستقیم در تیبل ویو نمایش داده میشه self.newEntryDictionary["time"] = record["time"] as? String // اینجا داخل آرایه ریخته میشه
ولی متوجه شدم که جی سون من مدلش با این نوع آرایه فرق میکنه و باعث میشه که در این آرایه فقط آخرین خانه از جدول ذخیره بشه.
جدولی که من در دیتابیس آنلاین دارم و با جیسون دریافتش میکنم به این صورت هست:
[]JSON
{}0
- id: 1
- name:"Ali"
- city:"tehran"
.
.
- time:"33225052016"
{}1
{}2
...
خوب حالا اگر اطلاعات رو داخل اون نوع آرایه بریزم فقط بلاک۲ داخل آرایه قرار میگیره!
الآن من از چه نوع دیکنشری باید استفاده کنم که بتونم درست این اطلاعات رو داخلش قرار بدم و با دستوران فیلتر کردن متن هم سازگاری داشته باشه ؟
چون تا اینجایی که من متوجه شدم برای فیلتر کردن یک متن باید حتما جنسش استرینگ باشه یا آرایه ساده ای از استرینگ ها باشه.
اگه اشتباه نکنم اینها مدلهای مختلف دیکشنری هستند:
var emptyDict = [String: String]() var emptyDict = Dictionary<String, String>() var emptyDict: [String: String] = [:] var emptyDict: [String: String] = [String: String]() var emptyDict: [String: String] = Dictionary<String, String>() var emptyDict: Dictionary = [String: String]() var emptyDict: Dictionary = Dictionary<String, String>() var emptyDict: Dictionary<String, String> = [:] var emptyDict: Dictionary<String, String> = [String: String]() var emptyDict: Dictionary<String, String> = Dictionary<String, String>()
حالا از کدام یک از اینها باید استفاده کنم؟
شما جیسونی دارید شما یک آرایه از اشیا ، مانند آموزش ها JSON را با استفاده از NSDictionary دریافت کنید .
Dictionary در Swift به شکل Generic است . لیستی که در بالا قرار دادید انواعی از Dictionary ها نیست ، بلکه روش های مختلفی برای ایجاد یک Dictionary است.
1- پس از NSDictionary استفاده کنید تا همه آیتم ها را شامل شود و مشکلی پیش نیاید.
2- در بخش جستجو شما بر روی آیتمی از شی مورد نظر سرچ را انجام میدهید که از جنس استرینگ باشد ، به نظرم مشکل شما در روش جستجو است .
- هرچی سرچ و جستجو میکنم به جایی نمیرسم. خیلی گیج کننده شده. از آموزش هم چیزی دستگیرم نمیشه. آخه شما در آموزش اطلاعات رو داخل جدول نمایش میدید فقط. من هم تا همینجاش رو با آموزش جلو آمدم ولی چطور اطلاعات رو داخل دیکشنری یا آرایه ای از آرایه ها بریزم !؟
علی ایو حال راه دیگه ای به ذهنم خطور کرد که قبل از لود کردن اطلاعات در تیبلویو اونها رو فیلتر کنم. یعنی توی حلقه ای که میخواد اطلاعات جی سون رو در تیبل ویو قرار بده بگم مثلا اگر اطلاعات با سرچ برابر بود مقدارش رو در تیبل ویو وارد کن. و خداروشکر درست شد بالاخره ولی اونطوری که سرچ درست کار کنه بهتر بود. بهرحال ممنون.
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .