Lug'at yordamida RealM nusxasiga qator satrlarini qanday saqlash mumkin?

Men "Real" uchun yangi va bu masalaga ega bo'ldim.

Bunga o'xshash Lug'at mavjud

{
    firstName : "Mohshin"
    lastName : "Shah"
    nickNames : ["John","2","3","4"]              
}

va class kabi

class User: Object {
    var firstName: String?
    var lastName: String?
    var nickNames: [String]?
}

Men qadriyatlarni qo'shishga harakat qilyapman, biroq quyida aytib o'tilganidek, istisno qilyapman

"NikNames" mulki "NSArray" deb nomlangan bo'lib, u qo'llab-quvvatlanadigan RLMObject xususiyat turi emas. Barcha xususiyatlar primitivlar bo'lishi kerak: NSString , NSDate , NSData </​​code>, NSNumber , RLMArray , RLMLinkingObjects yoki RLMObject ning quyi sinflari. https://realm.io/docs/objc/latest/api/ sahifasiga qarang. Batafsil ma'lumot uchun Class/RLMObject.html ni bosing Men ham sinab ko'rdim

var nickNames =  NSArray()

var nickNames =  NSMutableArray()

Lekin ishlamayapman. Men Nikkacha namunali sinfni yaratishim kerakmi yoki quyidagi xususiyatni yaratishim kerakmi yoki buni amalga oshirishning usullari bormi?

var nickNames =  List()
6
Hudud endi bevosita ibtidoiy turlari ro'yxatini qo'llab-quvvatlaydi. bu javobni ko'ring.
qo'shib qo'ydi muallif bmunk, manba

6 javoblar

Yangilash:

Bas, RLMArrays yoki Lists ichida to'g'ridan-to'g'ri ibtidoiy turlarni yoki null taqqoslash vositalarini (ko'proq aniqroq: booleans, tamsayı va suzuvchi nuqta raqamlari, satrlar, sanalar va ma'lumotlar) saqlashingiz mumkin. Agar siz bunday ibtidoiy qadriyatlar ro'yxatini aniqlasangiz, unda bir nechta miqdordagi noyob sariq buyumlarni aniqlab olishingiz kerak emas. Buning o'rniga, faqat ibtidoiy qiymatlarni o'zida saqlay olasiz.

Dastlabki qiymatlar ro'yxatlari ob'ektlarni o'z ichiga olgan ro'yxatlar bilan bir xil ishlaydi, chunki quyidagi misolda Swift:

class Student : Object {
    @objc dynamic var name: String = ""
    let testScores = List()
}

// Retrieve a student.
let realm = try! Realm()
let bob = realm.objects(Student.self).filter("name = 'Bob'").first!

// Give him a few test scores, and then print his average score.
try! realm.write {
    bob.testScores.removeAll()
    bob.testScores.append(94)
    bob.testScores.append(89)
    bob.testScores.append(96)
}
print("\(bob.testScores.average()!)")  //93.0

Realm tomonidan qo'llab-quvvatlanadigan barcha boshqa tillar ham ibtidoiy turlari ro'yxatini qo'llab-quvvatlaydi.

1
qo'shib qo'ydi

Yangilash:

Bas, RLMArrays yoki Lists ichida to'g'ridan-to'g'ri ibtidoiy turlarni yoki null taqqoslash vositalarini (ko'proq aniqroq: booleans, tamsayı va suzuvchi nuqta raqamlari, satrlar, sanalar va ma'lumotlar) saqlashingiz mumkin. Agar siz bunday ibtidoiy qadriyatlar ro'yxatini aniqlasangiz, unda bir nechta miqdordagi noyob sariq buyumlarni aniqlab olishingiz kerak emas. Buning o'rniga, faqat ibtidoiy qiymatlarni o'zida saqlay olasiz.

Dastlabki qiymatlar ro'yxatlari ob'ektlarni o'z ichiga olgan ro'yxatlar bilan bir xil ishlaydi, chunki quyidagi misolda Swift:

class Student : Object {
    @objc dynamic var name: String = ""
    let testScores = List()
}

// Retrieve a student.
let realm = try! Realm()
let bob = realm.objects(Student.self).filter("name = 'Bob'").first!

// Give him a few test scores, and then print his average score.
try! realm.write {
    bob.testScores.removeAll()
    bob.testScores.append(94)
    bob.testScores.append(89)
    bob.testScores.append(96)
}
print("\(bob.testScores.average()!)")  //93.0

Realm tomonidan qo'llab-quvvatlanadigan barcha boshqa tillar ham ibtidoiy turlari ro'yxatini qo'llab-quvvatlaydi.

1
qo'shib qo'ydi

Realm doesn't support model properties that are NSArrays, and currently doesn't support properties that are Lists of primitive types (such as Lists of strings). For now, you should create a Nickname model that wraps the nickname string, and then store a List, as in your sample code above.

This ticket on our GitHub repository tracks support for lists of primitives, although none of the comments from 2014 are particularly relevant anymore. You can follow that ticket if you want to be informed as to when that feature will become available.

(Shuningdek, ro'yxat kodingizni bor emas, balki kod deb e'lon qilish kerak.)

0
qo'shib qo'ydi
O'ylaymanki, hozirmi?
qo'shib qo'ydi muallif EpicPandaForce, manba
Jon siz sharhingizga yozgan kod snippetalaridan birortasida emas. Siz foydalanadigan haqiqiy kod bilan savolingizni yangilab olasizmi?
qo'shib qo'ydi muallif AustinZ, manba
nickNames: [{value: "John"}, {value: "2"}, {value: "3"}, {value: " nicknames 4 "}] ? ( Nickname ob'ektini value nomli bitta xususiyatga ega deb o'ylayman.)
qo'shib qo'ydi muallif AustinZ, manba
Bunday nomdagi nami uchun namuna yaratildi `` class Nickname: Object {dynamic var value: String! } "va" nicknames = "() `` `Noto'g'ri qiymati 'Jon'
qo'shib qo'ydi muallif Mohshin Shah, manba
Jon laqabli qiymatdir. Men faqat nomni qayta nomladim, boshqa hech narsa yo'q. Bunga 1 ega bo'lishingiz mumkin. Hali ham savolni yangilash
qo'shib qo'ydi muallif Mohshin Shah, manba
Bu mumkin emas. Agar buni qila olsam nima uchun bu savolni beraman: D: D. Men aytgandagina o'zgardim.
qo'shib qo'ydi muallif Mohshin Shah, manba

Realm doesn't support model properties that are NSArrays, and currently doesn't support properties that are Lists of primitive types (such as Lists of strings). For now, you should create a Nickname model that wraps the nickname string, and then store a List, as in your sample code above.

This ticket on our GitHub repository tracks support for lists of primitives, although none of the comments from 2014 are particularly relevant anymore. You can follow that ticket if you want to be informed as to when that feature will become available.

(Shuningdek, ro'yxat kodingizni bor emas, balki kod deb e'lon qilish kerak.)

0
qo'shib qo'ydi
O'ylaymanki, hozirmi?
qo'shib qo'ydi muallif EpicPandaForce, manba
Jon siz sharhingizga yozgan kod snippetalaridan birortasida emas. Siz foydalanadigan haqiqiy kod bilan savolingizni yangilab olasizmi?
qo'shib qo'ydi muallif AustinZ, manba
nickNames: [{value: "John"}, {value: "2"}, {value: "3"}, {value: " nicknames 4 "}] ? ( Nickname ob'ektini value nomli bitta xususiyatga ega deb o'ylayman.)
qo'shib qo'ydi muallif AustinZ, manba
Bunday nomdagi nami uchun namuna yaratildi `` class Nickname: Object {dynamic var value: String! } "va" nicknames = "() `` `Noto'g'ri qiymati 'Jon'
qo'shib qo'ydi muallif Mohshin Shah, manba
Jon laqabli qiymatdir. Men faqat nomni qayta nomladim, boshqa hech narsa yo'q. Bunga 1 ega bo'lishingiz mumkin. Hali ham savolni yangilash
qo'shib qo'ydi muallif Mohshin Shah, manba
Bu mumkin emas. Agar buni qila olsam nima uchun bu savolni beraman: D: D. Men aytgandagina o'zgardim.
qo'shib qo'ydi muallif Mohshin Shah, manba

Ro'yxatdan foydalanish uni amalga oshirishning yagona yo'li. Nickname ob'ektini (ro'yxatda ishlatish uchun yaratgan ob'ekt objektifi) ishga tushirganingizda, qiymat aslida bitta mag'lub bo'lsa ham qiymat parametrlari uchun qatorni taqdim etishingiz kerak. Misol uchun:

let aNickName = Nickname(value:["John"])

Shuning uchun "Yanl" qiymati ob'ektni ishga tushirish uchun "Jon" noto'g'ri qiymati "Nickname" deb nomlangan xatoni keltirib chiqardi.

0
qo'shib qo'ydi

Ro'yxatdan foydalanish uni amalga oshirishning yagona yo'li. Nickname ob'ektini (ro'yxatda ishlatish uchun yaratgan ob'ekt objektifi) ishga tushirganingizda, qiymat aslida bitta mag'lub bo'lsa ham qiymat parametrlari uchun qatorni taqdim etishingiz kerak. Misol uchun:

let aNickName = Nickname(value:["John"])

Shuning uchun "Yanl" qiymati ob'ektni ishga tushirish uchun "Jon" noto'g'ri qiymati "Nickname" deb nomlangan xatoni keltirib chiqardi.

0
qo'shib qo'ydi