天道酬勤,学无止境

Models does not create tables when synched

I have some django models for my extended users profile. Problem is that this code does not create tables when syncdb is used (simply nothing happens. No validation errors). Why is that happening? (Also those models give import error elsewhere) :

#!/usr/bin/env python
# encoding: utf-8
from django.db import models
from django.contrib.auth.models import User
from registration.signals import user_registered
from forms import ExtendedRegistrationForm
import hashlib

class InheritedProfile(models.Model):
    first_name = models.CharField("Name", max_length=50, blank=True, null=True)
    last_name = models.CharField("Last name", max_length=50, blank=True, null=True)
    pid = models.CharField("PESEL", max_length=11, blank=True, null=True)
    street = models.CharField("Street", max_length=50, blank=True, null=True)
    number = models.CharField("Flat/house number", max_length=10, blank=True, null=True)
    code = models.CharField("Zip ", max_length=6, blank=True, null=True)
    city = models.CharField("City", max_length=50, blank=True, null=True) 
    class Meta:
        abstract=True

class UserProfile(InheritedProfile):
    def upload_path(self, field_attname):
        filename = hashlib.md5(field_attname).hexdigest()[:4] + "_" + field_attname
        return "uploads/users/%s" % (filename,)

    user = models.ForeignKey(User, unique=True, related_name='profile')
    image = models.ImageField(upload_to=upload_path, verbose_name="Image", blank=True, null=True)

    class Meta:
        ordering = ['-id']
        db_table = 'userprofile'

    def __unicode__(self):
        return u"%s " % self.user.username

def user_created(sender, user, request, **kwargs):
    form = ExtendedRegistrationForm(request.POST)
    extended_user = UserProfile(user=user)
    extended_user.is_active = False
    extended_user.first_name = form.cleaned_data['first_name']
    extended_user.last_name = form.cleaned_data['last_name']
    extended_user.pid = form.cleaned_data['pid']
    extended_user.image = form.cleaned_data['image']
    extended_user.street = form.cleaned_data['street']
    extended_user.number = form.cleaned_data['number']
    extended_user.code = form.cleaned_data['code']
    extended_user.city = form.cleaned_data['city']
    extended_user.save()

user_registered.connect(user_created)

class Friend(InheritedProfile):
    friend_of = models.ForeignKey(UserProfile, related_name='friend_of')
    class Meta:
        db_table = 'friend'

In contrary this code produces tables flawlessly :

#!/usr/bin/env python
# encoding: utf-8
from django.db import models
from django.contrib.auth.models import User
import hashlib

class InheritedProfile(models.Model):
    first_name = models.CharField("Name", max_length=50, blank=True, null=True)
    last_name = models.CharField("Last name", max_length=50, blank=True, null=True)
    pid = models.CharField("PESEL", max_length=11, blank=True, null=True)
    street = models.CharField("Street", max_length=50, blank=True, null=True)
    number = models.CharField("Flat/house number", max_length=10, blank=True, null=True)
    code = models.CharField("Zip ", max_length=6, blank=True, null=True)
    city = models.CharField("City", max_length=50, blank=True, null=True) 
    class Meta:
        abstract=True

class UserProfile(InheritedProfile):
    def upload_path(self, field_attname):
        filename = hashlib.md5(field_attname).hexdigest()[:4] + "_" + field_attname
        return "uploads/users/%s" % (filename,)

    user = models.ForeignKey(User, unique=True, related_name='profile')
    image = models.ImageField(upload_to=upload_path, verbose_name="Image", blank=True, null=True)

    class Meta:
        ordering = ['-id']
        db_table = 'userprofile'

    def __unicode__(self):
        return u"%s " % self.user.username

class Friend(InheritedProfile):
    friend_of = models.ForeignKey(UserProfile, related_name='friend_of')
    class Meta:
        db_table = 'friend'

Should I move this user_created function somewhere else ? Signals shouldn't create problems here...

评论

Well you seem to have some kind of cross import; if you import some models to forms and some form from there back to models this can't be resolve, because when processing models forms is required to be imported, and forms requires models again... This can't be resolved!

Besides this I think it's better design not needing to import forms in a models module, because they are more related to views!

受限制的 HTML

  • 允许的HTML标签:<a href hreflang> <em> <strong> <cite> <blockquote cite> <code> <ul type> <ol start type> <li> <dl> <dt> <dd> <h2 id> <h3 id> <h4 id> <h5 id> <h6 id>
  • 自动断行和分段。
  • 网页和电子邮件地址自动转换为链接。

相关推荐
  • rake db:migrate 究竟是做什么的?(exactly what does rake db:migrate do?)
    问题 rake db:migrate 是只添加新的迁移,还是删除所有迁移/更改并构建新的所有内容? 我认为 rake 正在抛出错误,因为它试图访问在迁移 042 中删除的迁移 040 中的表属性。不知何故,我的数据库和 rake 不同步,我想修复它们。 对于您那里的专家 - rake 与迁移不同步是很常见的吗? 我怎样才能避免这种情况(不,我不会手动编辑我的架构或 rake 文件)。 回答1 每次使用脚本(如脚本/生成模型...)创建迁移时,都会将新迁移添加到正确的目录中,以准备与真实数据库同步。 实际上 rake db:migrate 只是检查哪些丢失的迁移仍然需要应用于数据库而不关心以前的迁移。 当然,如果您使用其他方式修改数据库,则通常会获得不同步的内容,因为正如您所说,您会发现自己将迁移应用于下面已更改的内容。 回答2 当您使用 rails 迁移时,会自动创建一个名为schema_migrations的表,它通过存储每个迁移的版本号(这是文件名中迁移名称的前缀数字,即 db/迁移/_20090617111204__migration.rb)。 当您运行rake db:migrate来向上迁移时,只会运行以前未运行的迁移(即它们的版本不包含在表中)(因此,更改已执行的迁移将不起作用运行db:migrate )。 向下迁移时,在schema
  • 使用 Microsoft Sync 框架更改数据库架构而不会丢失任何跟踪表数据(Making database schema changes using Microsoft Sync framework without losing any tracking table data)
    问题 我正在使用 Microsoft 同步服务框架 4.0 将 Sql 服务器数据库表与 Ipad 端的 SqlLite 数据库同步。 在 Sql Server 数据库中进行任何数据库架构更改之前,我们必须取消配置数据库表。 此外,在进行架构更改后,我们重新配置表。 现在在这个过程中,跟踪表(即同步信息)被删除。 我希望在重新配置后恢复跟踪表信息。 如何才能做到这一点? 是否可以在不取消配置的情况下进行数据库更改。 例如,应用程序是 2.0 版,同步工作正常。 现在在下一个 3.0 版本中,我想对数据库进行一些更改。 SO,在取消配置-配置过程中,跟踪信息。 被删除。 所以之前版本的所有跟踪信息都丢失了。 我不想丢失跟踪信息。 如何从以前的版本中恢复此跟踪信息。 我相信我们必须在取消配置之前编写自定义代码或触发器来存储跟踪信息。 任何人都可以提出合适的方法或提供有关此问题的一些有用链接。 回答1 配置过程应自动为您填充跟踪表。 您不必自己复制和重新加载它们。 现在,如果您认为跟踪表是框架存储先前同步内容的地方,那么答案是否定的。 跟踪表只存储插入/更新/删除的内容。 它用于变更枚举。 有关先前同步内容的信息存储在 scope_info 表中。 当您取消配置时,您会清除此同步元数据。 当您同步时,就像两个副本以前从未同步过一样。 因此,当框架尝试应用目标上已存在的行时,您将遇到冲突。
  • 与服务器同步本地HTML5 DB(WebSQL存储,SQLite)的最佳方法(2路同步)(Best way to synchronize local HTML5 DB (WebSQL Storage, SQLite) with a server (2 way sync) [closed])
    问题 从目前的情况来看,这个问题不适合我们的问答形式。 我们希望答案会得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意测验或进一步的讨论。 如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 8年前关闭。 我正在使用本地数据库(使用html5 webstorage)开发一个移动Web应用程序(适用于iPhone和Android),因此当用户离线时我的应用程序仍然可以使用。 这工作正常,但是我想将本地数据保存在服务器上。 因此,我需要将本地数据库与服务器上的数据库同步。 同步只能是一种方式,但是在将来,我想以两种方式(服务器<->本地数据库)进行同步。 这项要求看起来很普通(或者将来在移动Web应用程序中很常见),但是我找不到这样做的库。 我知道google在他们的移动网络应用程序(例如gmail)中正在执行此操作,并且我发现WSPL项目是google项目,但没有可供下载的源。 如果找不到解决方案,我将创建一个库来执行此操作,因为同步的一种方式看起来并不困难,但我想知道是否还有其他解决方案。 回答1 我创建了一个名为WebSqlSync的小型JS库,以将本地WebSql DB与服务器(客户端<->服务器)同步。 非常易于使用和集成到您的代码中: https://github.com/orbitaloop/WebSqlSync
  • 迁移同步开发和生产数据库(migration synch developmental and production databases)
    问题 我将MVC 5与NET Framework 4.5.1一起使用。 代码优先。 我还将SQL Server 2012和(localdb)\ v11.0与Migrations一起使用。 我正在使用C#和MVC5开发项目。 在开发过程中,我在开发计算机中创建了许多新表,并更改了“名称”字段,我相信系统会为其创建索引。 我添加并删除了几次。 之后,我添加了许多新的不相关表,但是由于某些原因,由于“名称”字段的索引,我的迁移开始给我国外限制错误。 当我修复它们时,这些错误不断增加,因此,我决定恢复到迁移时的初始状态,并使用当前位置作为新的起点进行重置。 我希望生产表可以查看开发数据库中的这个新起点,并将自身重新同步到开发状态。 我以为我已经读过某个地方,生产数据库将自己与开发数据库匹配并进行自我更新。 我相信生产db中有一个迁移文件,该文件将自己与开发db中的文件匹配-该文件显然不同步。 我已经考虑过删除其中的数据,但是我一直等到获得建议为止。 无论如何,我在开发计算机中更改了迁移目录的名称,并将其从项目中排除了。 然后,我在开发计算机上重新初始化了我的表(在本地数据库中使用新的数据库名称),并用初始化数据重新加载了该表。 一切正常。 现在,我遇到了一个新问题,我的生产数据库和开发数据库是不同的,并且我在开发计算机中的迁移已设置为创建新文件,而处于生产状态的迁移则期望较早的迁移。
  • MySQL默认数据库介绍
    MySQL默认数据库介绍   大家在学习MySQL时,安装后都会发现里边已经自带了几个默认的数据库,我装的MySQL5.5里边自带六个数据库    网上查了一些资料对这几个数据库的功能做一下学习。  1.information_schema  这个库中有很多的表      information_schema数据库表说明:  SCHEMATA表:提供了当前mysql实例中所有数据库的信息。是show databases的结果取之此表。  TABLES表:提供了关于数据库中的表的信息(包括视图)。详细表述了某个表属于哪个schema,表类型,表引擎,创建时间等信息。是show tables from schemaname的  结果取之此表。  COLUMNS表:提供了表中的列信息。详细表述了某张表的所有列以及每个列的信息。是show columns from schemaname.tablename的结果取之此表。  STATISTICS表:提供了关于表索引的信息。是show index from schemaname.tablename的结果取之此表。  USER_PRIVILEGES(用户权限)表:给出了关于全程权限的信息。该信息源自mysql.user授权表。是非标准表。  SCHEMA_PRIVILEGES(方案权限)表:给出了关于方案(数据库)权限的信息
  • 使用O / R映射时应从哪里开始设计? 对象还是数据库表?(Where do I start designing when using O/R mapping? Objects or database tables?)
    问题 我正在启动一个新的数据库应用程序,我想知道最好是在对象上启动设计(使用UML)并相应地构建数据库模式,还是在数据库设计上启动(使用ER)并创建对象会更好。因此。 两种方法的优缺点是什么? (我认为这并不重要,但以防万一:我计划使用Java和Hibernate) 回答1 取决于您的应用程序旨在满足用户需求还是满足开发人员需求。 从用户故事开始,并直接获得OOP类。 您的用户会爱上您。 否则,您最终将获得一个将用户变成数据输入文员的应用程序。 (你会有很多公司。) 回答2 从数据库开始的优点是,您将牢记性能和DBA。 从OOP方面开始的优点是您将拥有更纯正的OO设计,但是您的ORM可能表现不佳。 我发现黑匣子ORM太局限了,所以我的系统都是手工编码的,或者生成和修改的代码,因此我的数据库通常很紧凑,而我的OO模型却很纯正。 我坚信聪明的人是解决阻抗失配问题的方法。 回答3 这取决于您的长处和想去的地方。 如果您从正确的位置开始,则可以从对象开始,并做得很好,包括数据库中的表设计良好。 从面向对象的分析开始,而不是面向对象的设计。 我无法充分强调分析与设计之间的区别。 撰写有关面向对象分析的人(其中有些人使用UML作为工具)试图清楚地区分这种区别。 分析属于问题领域,而设计属于解决方案领域。 无论您的方法是否面向对象,这些都可以轻松地相互混合。
  • migration synch developmental and production databases
    I am using MVC 5 with NET Framework 4.5.1. with Code-first. I am also using Migrations with the SQL 2012 server and (localdb)\v11.0. I am in the middle of developing a project using C# and MVC5. During development, I created a lot of new tables in my developmental computer and changed a the "Name" field which I believe the system makes an index for. I added it and deleted it several times. After that, I added a lot iof new unrelated tables, but for some reason, my migrations started giving me foreign constraint errors due to the indexes for the "Name" field. These errors kept multiplying as I
  • MySQL默认数据库介绍
    MySQL默认数据库介绍   大家在学习MySQL时,安装后都会发现里边已经自带了几个默认的数据库,我装的MySQL5.5里边自带六个数据库      网上查了一些资料对这几个数据库的功能做一下学习。   1.information_schema   这个库中有很多的表         information_schema数据库表说明:   SCHEMATA表:提供了当前mysql实例中所有数据库的信息。是show databases的结果取之此表。   TABLES表:提供了关于数据库中的表的信息(包括视图)。详细表述了某个表属于哪个schema,表类型,表引擎,创建时间等信息。是show tables from schemaname的  结果取之此表。   COLUMNS表:提供了表中的列信息。详细表述了某张表的所有列以及每个列的信息。是show columns from schemaname.tablename的结果取之此表。   STATISTICS表:提供了关于表索引的信息。是show index from schemaname.tablename的结果取之此表。   USER_PRIVILEGES(用户权限)表:给出了关于全程权限的信息。该信息源自mysql.user授权表。是非标准表。   SCHEMA_PRIVILEGES(方案权限)表:给出了关于方案(数据库
  • 如何在Django 1.7中重置迁移(How to reset migrations in Django 1.7)
    问题 (我知道有一个与此标题相同的标题,但问题有所不同)。 我设法使开发机器迁移和生产迁移不同步。 我有一个使用South的Django应用。 我有自己的工作流程,效果很好(这可能不是正确的处理方式,但是我没有任何问题)。 基本上,我有一个脚本,可将生产数据库转储复制到我的开发计算机上。 它还复制了迁移文件。 这样,两者就可以同步了,我可以像往常一样运行South命令。 现在,我已升级到1.7,并开始使用迁移。 当我使用以前的工作流程(从生产环境复制数据库转储和迁移文件)时,它没有检测到开发计算机上的更改。 我已经阅读了迁移文档,并发现使用它的正确方法是: 在我的开发机器上运行“进行迁移”和“迁移”。 在我的devlopemnt机器上运行“ migrate”以实际进行数据库更改复制更改,包括迁移文件。 在生产机器上运行“迁移”。 (没有“ makemigrations”步骤) 反正。 现在都一团糟。 我想“重置”我的迁移并从头开始,从现在开始做正确的事情。 我需要做什么? 删除迁移表的内容(在两台计算机上)? 删除迁移文件夹的内容? (包括init .py文件)。 按照文档中的说明开始新的迁移。 我错过了什么吗? 为什么从生产中复制所有内容(数据库和迁移文件)之后,在我的开发机器上没有检测到任何更改,这是有原因的吗 回答1 只要在两种环境下,我都将做以下事情(只要代码是相同的)
  • EF5得到此错误消息:因为数据库不包含模型元数据,所以无法检查模型兼容性(EF5 Getting this error message: Model compatibility cannot be checked because the database does not contain model metadata)
    问题 我有此错误消息,每次我运行该应用程序时都会一直显示。 我正在使用Entity Framework 5: Code First 这是错误消息, System.NotSupportedException: Model compatibility cannot be checked because the database does not contain model metadata. Model compatibility can only be checked for databases created using Code First or Code First Migrations. at System.Data.Entity.Internal.ModelCompatibilityChecker.CompatibleWithModel(InternalContext internalContext, ModelHashCalculator modelHashCalculator, Boolean throwIfNoMetadata) at System.Data.Entity.Internal.InternalContext.CompatibleWithModel(Boolean throwIfNoMetadata) at System.Data.Entity
  • Django中的每个请求缓存?(Per-request cache in Django?)
    问题 我想实现一个装饰器,该装饰器为每个方法提供按请求缓存,而不仅仅是视图。 这是一个示例用例。 我有一个自定义标签,用于确定长记录列表中的记录是否为“收藏夹”。 为了检查某个项目是否是我的最爱,您必须查询数据库。 理想情况下,您将执行一个查询以获取所有收藏夹,然后仅针对每条记录检查该缓存列表。 一种解决方案是在视图中获取所有收藏夹,然后将该设置传递到模板中,然后传递到每个标记调用中。 另外,标签本身可以执行查询本身,但是只能在第一次调用时执行。 然后,可以将结果缓存以供后续调用。 好处是,您可以在任何视图的任何模板中使用此标记,而不会发出警告。 在现有的缓存机制中,您可以将结果缓存50毫秒,并假定该结果与当前请求相关。 我想使这种关联可靠。 这是我当前拥有的标签的示例。 @register.filter() def is_favorite(record, request): if "get_favorites" in request.POST: favorites = request.POST["get_favorites"] else: favorites = get_favorites(request.user) post = request.POST.copy() post["get_favorites"] = favorites request.POST = post
  • MVVM和VM集合(MVVM and collections of VMs)
    问题 一个常见的说法:一个带有项目模型集合的模型。 例如带有人文收藏的房屋。 如何为MVVM正确构建此结构-特别是在通过添加和删除来更新Model和ViewModel集合方面? 样板House包含模型People的集合(通常是List<People> )。 视图模型HouseVM包含包装的House对象和视图模型PeopleVM ObservableCollection<PeopleVM> ( ObservableCollection<PeopleVM> )。 请注意,我们在这里结束时,HouseVM拥有两个集合(需要同步): 1. HouseVM.House.List<People> 2. HouseVM.ObservableCollection<PeopleVM> 现在,使用新的人员(添加)或人员离开(删除)更新房屋后,现在必须同时在模型房屋人员集合和VM HouseVM PeopleVM ObservableCollection两个集合中处理该事件。 这种结构是正确的MVVM吗? 无论如何,是否有必要避免对“添加”和“删除”进行两次更新? 回答1 您的通用方法是非常好的MVVM,让ViewModel暴露其他ViewModel的集合是一个非常常见的场景,我在各处使用它。 我不建议像nicodemus13所说的那样直接在ViewModel中公开项目,因为您最终将视图绑定到模型
  • VBA中的多线程(Multi-threading in VBA)
    问题 这里有人知道如何使VBA运行多个线程吗? 我正在使用Excel。 回答1 无法使用VBA本地完成。 VBA内置在单线程单元中。 获得多个线程的唯一方法是在具有COM接口的VBA以外的其他版本中构建DLL,然后从VBA调用它。 INFO:描述和OLE线程模型的工作 回答2 如您所知,VBA本身并不支持多线程。 有3种方法可以实现多线程: COM / dll-例如,C#和Parallel类可在单独的线程中运行使用VBscript工作线程-在单独的VBscript线程中运行VBA代码使用通过VBscript执行的VBA工作线程-复制Excel工作簿并并行运行宏。 我在这里比较了所有线程方法:http://analystcave.com/excel-multithreading-vba-vs-vbscript-vs-c-net/ 考虑到方法3,我还制作了一个VBA多线程工具,该工具可让您轻松地将多线程添加到VBA:http://analystcave.com/excel-vba-multithreading-tool/ 请参阅以下示例: 多线程的For循环 Sub RunForVBA(workbookName As String, seqFrom As Long, seqTo As Long) For i = seqFrom To seqTo x = seqFrom / seqTo
  • More iCloud Core Data synching woes
    So, it finally happened. The worst case scenario for any independent iPhone developer occurred. Several users are reporting complete data loss after upgrading my app. iCloud Core Data sync is not working. My users are using this app partially to run their businesses. This is a truly catastrophic failure. The only iCloud related thing I changed was to add the key-value store to iCloud. The core data code remained exactly the same, same model version (no migration) etc. In my tests everything worked beautifully! But to my dismay, users reported that their data was not there anymore when they
  • 非规范化以何种方式提高数据库性能?(In what way does denormalization improve database performance?)
    问题 我听到了很多有关非规范化的信息,这些信息是为了提高某些应用程序的性能而设计的。 但是我从未尝试做任何相关的事情。 因此,我很好奇,规范化数据库中的哪些位置使性能变差,或者换句话说,非规范化原理是什么? 如果需要提高性能,该如何使用此技术? 回答1 非规范化是时空的权衡。 规范化的数据占用较少的空间,但可能需要加入才能构造所需的结果集,因此需要更多时间。 如果对它进行了非规范化,则数据将在多个位置复制。 这样会占用更多空间,但是可以轻松获得所需的数据视图。 还有其他时空优化,例如 非规范化视图预计算列 与任何此类方法一样,这可以提高读取数据的速度(因为它们很容易获得),但是更新数据的成本更高(因为您需要更新复制的或预先计算的数据)。 回答2 非规范化通常用于: 避免一定数量的查询删除一些联接 非规范化的基本思想是,您将添加冗余数据或对其中的一些数据进行分组,以便能够更轻松地以较低的成本获取这些数据; 这对表演更好。 一个简单的例子? 考虑博客的“帖子”和“评论”表对于每个帖子,“评论”表中将有几行这意味着要显示带有相关评论数的帖子列表,您必须: 进行一次查询以列出帖子对每条帖子进行一次查询以统计评论数(是的,这些评论只能合并为一条,以同时获得所有帖子的数量) 这意味着几个查询。 现在,如果您在“帖子”表中添加“评论数”字段: 您只需要一个查询即可列出帖子无需查询注释表
  • 使用 MongoDB 而不是 MS SQL Server 的优缺点 [关闭](Pros and Cons of using MongoDB instead of MS SQL Server [closed])
    问题 关闭。 此问题不符合 Stack Overflow 准则。 它目前不接受答案。 想改善这个问题吗? 更新问题,使其成为 Stack Overflow 的主题。 2年前关闭。 改进这个问题 我是 NoSQL 世界的新手,正在考虑将我的 MS Sql Server 数据库替换为 MongoDB。 我的应用程序(用 .Net C# 编写)与 IP 摄像机交互并将来自摄像机的每个图像的元数据记录到 MS SQL 数据库中。 平均而言,我每天为每台摄像机插入大约 86400 条记录,并且在当前的数据库模式中,我为单独的摄像机图像创建了单独的表,例如 Camera_1_Images、Camera_2_Images ... Camera_N_Images。 单个图像记录由简单的元数据信息组成。 像 AutoId、FilePath、CreationDate。 为了添加更多细节,我的应用程序为每个摄像头启动了单独的进程 (.exe),每个进程每秒在数据库的相关表中插入 1 条记录。 我需要(MongoDB)专家就以下问题提出建议: 判断 MongoDB 是否适合保存此类数据,这些数据最终将根据时间范围进行查询(例如,检索特定小时内特定相机的所有图像)? 关于我的案例的基于文档的架构设计有什么建议吗? 服务器(CPU、RAM、磁盘)的规格应该是什么? 有什么建议吗? 对于这种情况
  • Making database schema changes using Microsoft Sync framework without losing any tracking table data
    I am using Microsoft Synch Service Framework 4.0 for synching Sql server Database tables with SqlLite Database on the Ipad side. Before making any Database schema changes in the Sql Server Database, We have to Deprovision the database tables. ALso after making the schema changes, we ReProvision the tables. Now in this process, the tracking tables( i.e. the Synching information) gets deleted. I want the tracking table information to be restored after Reprovisioning. How can this be done? Is it possible to make DB changes without Deprovisioning. e.g, the application is in Version 2.0, The
  • 一个单一的Xcode项目是否可以有多个核心数据模型文件? [复制](is it possible to have multiple core data model files to one single Xcode project? [duplicate])
    问题 这个问题已经在这里有了答案: 一个iOS应用程序上可以有多个核心数据“数据库”吗? (2个答案) 7年前关闭。 我正在使用ipad应用程序处理核心数据。 应用程序管理的数据可以分为两类。 第一种数据仅特定于该设备或仅特定于应用程序。 而其他类别的数据则需要在具有相同应用的各种设备之间进行同步。 因此,在这种情况下,我想到了在我的项目中有两个模型文件和两个相应的sqlite文件。 并同步一个sqlite文件以实现同步。 如果我的方法正确可行,请提出建议。 如果没有,请提出其他解决方案。 请尝试理解该问题。 在这里,我谈论的是两个彼此具有不同结构的sqlite文件。 表示“ .xcdatamodel”模型文件 回答1 此处可能重复。 您可以具有任意数量的数据模型,前提是您要为每个模型创建不同的托管对象上下文并对其进行适当的管理。 - (NSURL *)applicationDocumentsDirectoryForCoreData { return [[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] lastObject]; } //第一个数据模型 NSURL *modelURL1 = [[NSBundle mainBundle]
  • 更多iCloud Core数据同步问题(More iCloud Core Data synching woes)
    问题 因此,它终于发生了。 对于任何独立的iPhone开发人员来说,最坏的情况都发生了。 升级我的应用程序后,一些用户报告完全数据丢失。 iCloud Core数据同步无法正常工作。 我的用户正在部分使用此应用来运营他们的业务。 这是一次真正的灾难性失败。 我更改的唯一与iCloud相关的事情是将键值存储添加到iCloud。 核心数据代码保持完全相同,相同的模型版本(无迁移)等。 在我的测试中,一切正常! 但令我沮丧的是,用户报告说,当他们打开更新的应用程序时,他们的数据不再存在。 这可能是什么原因? 持久性存储URL (无处不在的URL)应该没有改变。 合并冲突也不太可能,因为此问题应该在更新之前出现。 可能会干扰新的无处不在的键值存储吗? (我已经排除了这一点。) 在下面,请找到我的托管对象模型和持久性存储的代码。 让我知道您是否还有其他需要评估的问题。 - (NSManagedObjectContext *)managedObjectContext { if (managedObjectContext_ != nil) { return managedObjectContext_; } NSPersistentStoreCoordinator *coordinator = [self persistentStoreCoordinator]; if (coordinator
  • ReleaseSemaphore does not release the semaphore
    (In short: main()'s WaitForSingleObject hangs in the program below). I'm trying to write a piece of code that dispatches threads and waits for them to finish before it resumes. Instead of creating the threads every time, which is costly, I put them to sleep. The main thread creates X threads in CREATE_SUSPENDED state. The synch is done with a semaphore with X as MaximumCount. The semaphore's counter is put down to zero and the threads are dispatched. The threds perform some silly loop and call ReleaseSemaphore before they go to sleep. Then the main thread uses WaitForSingleObject X times to be