在我的应用程序中,我使用Core Data以及不使用Core Data的其他sqlite数据库.在这个附加数据库中,我有一些列,NSManagedObject通过每个实例存储对实例的引用NSManagedObjectID.
我得到一个实例objectId作为存储的字符串,如下所示:
instance.objectID.URIRepresentation.absoluteString
Run Code Online (Sandbox Code Playgroud)
这导致字符串看起来像:
x-coredata://EE13EA1E-D5F4-4E38-986D-3F4B0B03AEE4/ClassName/p658
Run Code Online (Sandbox Code Playgroud)
我以后可以使用它来获取这样的NSManagedObject实例:
[persistentStoreCoordinator managedObjectIDForURIRepresentation:[NSURL URLWithString:uriString]];
Run Code Online (Sandbox Code Playgroud)
由于这些URI字符串冗长且包含冗余信息,因此我希望仅保存每个URI的唯一方面,以节省数据库中的空间并提高查询性能.所以在上面的例子中,只是'658'而不是整个URI字符串.
所以第一个问题是:什么是提取一个独特尾部的好方法NSManagedObjectID?其次,一旦我存储了,我怎么能在以后用它来获取实例?
我想避免字符串操作,因为它感觉很吵,但我会考虑它,如果这是唯一的方法.我唯一的困惑是'EE13EA1E-D5F4-4E38-986D-3F4B0B03AEE4'部分来自上面的例子.我怎样才能访问该值以重建有效的URI?
我是Clojure和ClojureScript的忠实粉丝,我通常更喜欢使用ClojureScript而不是其他替代品用于我的项目,但有一件事有时会让我不再使用它,特别是在较小的项目上,是因为它增加了〜80kb.在生成的javascript中包含Google Closure库,即使我在代码中没有使用api也是如此.
有没有办法编译ClojureScript,避免这种额外的重量?
我需要计算一些python对象的大小,所以我可以将它们分解并将它们存储在memcache中而不会达到大小限制.
' sizeof()'似乎不存在于GAE环境中的python对象上,并且sys.getsizeof()也不可用.
GAE本身清楚地检查幕后的大小以强制执行限制.有关如何实现这一目标的任何想法?谢谢.
我是git和unix的新手所以请耐心等待.我正在尝试在ec2上设置的存储库中创建一个简单的git post-receive挂钩.在hooks文件夹中,我有一个名为post-receive的文件,它试图更新公共站点的工作目录.
#!/bin/sh
echo 'hi git'
cd /home/www-data/web2py/applications/init
sudo git checkout .
sudo git pull
echo 'done'
Run Code Online (Sandbox Code Playgroud)
但在推动之后,似乎没有任何事情发生.该站点的工作目录不会更新,当我运行git log时,没有错误迹象或我的echo语句.我想我错过了什么?谢谢.
我有一个简单的脚本,用于通过 XCode 以编程方式启动 iOS 项目:
on run project_loc
tell application "Xcode"
open project_loc
activate
end tell
tell application "System Events"
tell application process "Xcode"
click menu item "Run" of menu 1 of menu bar item "Product" of menu bar 1
end tell
end tell
end run
Run Code Online (Sandbox Code Playgroud)
这效果很好,只是它将焦点切换到 Xcode,这并不理想,因为我试图将其用作自动重新编译和重新启动以响应相关文件中的任何更改的方案的一部分。有没有什么方法可以在不将焦点集中到 Xcode 窗口的情况下完成此任务?
我有一个静态文件,我不想公开.有没有办法限制app.yaml访问,以便它只能由自己的域加载?
基于web2py的解决方案也受到欢迎,因为我在GAE之上使用它.
谢谢!
我有一个由NSFetchedResultsController支持的UITableView,它显示了用户已经加入书签的项目.可以从行内的按钮取消标记项目,这会导致问题.在项目未加书签后,它应该从表视图中消失,因为它不再与谓词匹配,但由于更新后每个部分的行计数已被更改,我得到此错误的变体:
CoreData:错误:严重的应用程序错误.在调用-controllerDidChangeContent:期间,从委托NSFetchedResultsController捕获到异常.无效更新:第0节中的行数无效.更新(3)后现有部分中包含的行数必须等于更新前该部分中包含的行数(4),加上或减去数字从该部分插入或删除的行(0插入,0删除)和加或减移入或移出该部分的行数(0移入,0移出).用户信息(null)
这是我非常简单的didChangeObject方法:
-(void)controller:(NSFetchedResultsController *)controller
didChangeObject:(id)anObject
atIndexPath:(NSIndexPath *)indexPath
forChangeType:(NSFetchedResultsChangeType)type
newIndexPath:(NSIndexPath *)newIndexPath
{
[super controller:controller didChangeObject:anObject atIndexPath:indexPath forChangeType:type newIndexPath:newIndexPath];
[self.tableView reloadRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationAutomatic];
}
Run Code Online (Sandbox Code Playgroud)
有没有什么方法可以指示NSFetchedResultsController不会出现不匹配的计数?或者我是否需要完全不同的方法?
core-data objective-c uitableview nsfetchedresultscontroller ios
我有一个CF9项目设置了多层目录结构.在根级别,我有一个带有Application.cfc的实时生产站点.它包含许多绑定到'debugMode'标志的变量 - 因此在生产站点的情况下,此标志设置为false.
在生产站点的子目录中,我有一个包含站点测试版本的文件夹.它有自己的Application.cfc,debugMode设置为true.除了这个标志和我们正在测试的更改之外,它与生产Application.cfc相同.
这个UNTIL没有任何问题我们添加了重置Application.cfc的逻辑,以便在不等待超时(我们设置为30分钟)的情况下查看我们的更改.
为此,我们将此块添加到Application.cfc中的"OnRequestStart"函数中(它出现在生产版和测试版上):
<cfif StructKeyExists( URL, "reset" )>
<!--- Reset application and session. --->
<cfset THIS.OnApplicationStart() />
<cfset THIS.OnSessionStart() />
</cfif>
Run Code Online (Sandbox Code Playgroud)
这最初似乎工作正常.如果我们在测试版本的任何页面的url中添加'?reset',立即反映Application.cfc所做的更改,但我们很快发现了一个令人讨厌的副作用:在测试版本上调用reset也改变了我们的生产站点以使用测试Application.cfc的版本,从而大大地满足一切.
在生产站点上运行'?reset'逻辑修复了此问题,但随后导致所有测试页使用生产Application.cfc而不是测试版.等待Application.cfcs超时并自动刷新没有任何区别,所以现在我们的测试环境搞砸了.
任何有关正在发生的事情或做什么的见解将会非常感激,因为我们相当难倒.这只是一个糟糕的建筑吗?我们继承了它,现在已经习惯了这种结构,所以快速修复是首选,但我愿意接受建议.
谢谢.
ios ×3
core-data ×2
objective-c ×2
applescript ×1
bash ×1
clojure ×1
coldfusion ×1
git ×1
memcached ×1
pickle ×1
python ×1
uitableview ×1
web2py ×1
xcode ×1