2014-11-23 4 views
0

Я использую фреймворк Realm для iOS, и я пытаюсь создать несколько объектов в массиве из запроса синтаксического анализа, но проверяя, что нет повторений в местной области.Создать или обновить функцию рамочной среды, не работающей в iOS

let lastSyncDate = NSUserDefaults.standardUserDefaults().objectForKey("com.fridge.sync.last") as NSDate 
let query = PFQuery(className: "Category", predicate: NSPredicate(format: "updatedAt > %@", lastSyncDate)) 
query.findObjectsInBackgroundWithBlock { (results, error) -> Void in 
    if error != nil { 
    return 
    } 
    if results.isEmpty { 
    return 
    } 
    let realm = RLMRealm.defaultRealm() 
    /*realm.transactionWithBlock({() -> Void in 
    for remoteCategory in results as [PFObject] { 
     let category = Category() 
     category.name = remoteCategory["name"] as String 
     category.image = NSData() 
     realm.addObject(category) 
    } 
    })*/ 
    /*realm.beginWriteTransaction() 
    for remoteCategory in results as [PFObject] { 
    let category = Category() 
    category.name = remoteCategory["name"] as String 
    category.image = NSData() 
    realm.addObject(category) 
    } 
    realm.commitWriteTransaction()*/ 
} 

Я также использовал версию creatorupdate, но она по-прежнему не сохраняет какой-либо из объектов, и по какой-то причине я не могу ничего, что Heppening внутри кода царств отладки.

Категория модель выглядит так:

class Category: RLMObject { 
    dynamic var categoryId: String = "" 
    dynamic var name: String = "" 
    dynamic var image: NSData = NSData() 
    var stores: [Store] { 
    return linkingObjectsOfClass(Store.className(), forProperty: "category") as [Store] 
    } 

    override class func primaryKey() -> String { 
    return "categoryId" 
    } 
} 

Любая идея о том, что, возможно, происходит не так высоко ценится. Заранее спасибо

ответ

0

Не похоже, что вы устанавливаете свойство categoryID на свои объекты. Это приведет к тому, что все они будут использовать один и тот же первичный ключ и перезаписать один и тот же объект при использовании createOrUpdate

Чтобы отлаживать и вводить код Царства, вам, вероятно, потребуется построить из источника.

+0

Хорошо, это сработало, как вы упомянули, спасибо большое. Что вы имели в виду, построив из источника? –

+0

Realm - это с открытым исходным кодом, и если вы сами создаете фреймворк, вы можете более легко отлаживать код Realm. Источник Realm доступен здесь: https://github.com/realm/realm-cocoa – Ari