我想用自定义图像创建一个UIBarButtonItem,但我不想要iPhone添加的边框,因为我的图像有一个特殊的边框.
它与后退按钮相同,但是前进按钮.
这个应用程序是针对inHouse项目的,所以我不在乎Apple是拒绝或批准它还是喜欢它:-)
如果我使用UIBarButtonItem的initWithCustomView:v属性,我可以这样做:
UIImage *image = [UIImage imageNamed:@"right.png"];
UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
[button setBackgroundImage: [image stretchableImageWithLeftCapWidth:7.0 topCapHeight:0.0] forState:UIControlStateNormal];
[button setBackgroundImage: [[UIImage imageNamed: @"right_clicked.png"] stretchableImageWithLeftCapWidth:7.0 topCapHeight:0.0] forState:UIControlStateHighlighted];
button.frame= CGRectMake(0.0, 0.0, image.size.width, image.size.height);
[button addTarget:self action:@selector(AcceptData) forControlEvents:UIControlEventTouchUpInside];
UIView *v=[[UIView alloc] initWithFrame:CGRectMake(0.0, 0.0, image.size.width, image.size.height) ];
[v addSubview:button];
UIBarButtonItem *forward = [[UIBarButtonItem alloc] initWithCustomView:v];
self.navigationItem.rightBarButtonItem= forward;
[v release];
[image release];
Run Code Online (Sandbox Code Playgroud)
这有效,但如果我必须在10个视图中重复此过程,这不是DRY.
我想我必须继承,但是什么?
谢谢,
问候,
我有一个主要的NSManagedObjectContext,它是在appDelegate中创建的.
知道,我正在使用另一个NSManagedObjectContext来编辑/添加新对象而不影响主NSManagedObjectContext,直到我保存它们.
当我保存第二个NSManagedObjectContext时,更改不会反映在主NSManagedObjectContext中,但如果我从模拟器打开.sqlite数据库,则更改已正确保存到.sqlite数据库中.无论我是否再次获取数据,即使我创建了第三个NSManagedObjectContext,我也看不到第二个NSManagedObjectContext的更改,但此时这些更改都在磁盘上...
如果我退出并打开应用程序,则所有更改都在那里.
是什么导致主NSManagedObjectContext不能看到商店的新变化?
在此方法之前,我使用相同的NSManagedObjectContext和undoManager,但我想将其更改为使用两个不同的NSManagedObjectContext.
谢谢,
米
NSError* error = nil;
if ([managedObjectContext hasChanges]) {
NSLog(@"This new object has changes");
}
if (![managedObjectContext save:&error]) {
NSLog(@"Failed to save to data store: %@", [error localizedDescription]);
NSArray* detailedErrors = [[error userInfo] objectForKey:NSDetailedErrorsKey];
if(detailedErrors != nil && [detailedErrors count] > 0) {
for(NSError* detailedError in detailedErrors) {
NSLog(@" DetailedError: %@", [detailedError userInfo]);
}
}
else {
NSLog(@" %@", [error userInfo]);
}
}
Run Code Online (Sandbox Code Playgroud) 我有一个对象,我对它进行了一些更改,但我不想保存它们,我想要'旧'值.
我尝试过:
[managedObjectContext rollback];
[managedObjectContext redo];
[managedObjectContext reset];
Run Code Online (Sandbox Code Playgroud)
并且它们似乎都没有工作......
NSLog(@"current: %@",ingredient.name); // ===> bread
[ingredient setName:@"test new data"];
NSLog(@"new: %@",ingredient.name); // ===> test new data
[managedObjectContext rollback];
[managedObjectContext redo];
[managedObjectContext reset];
NSLog(@"current: %@",ingredient.name); // ===> test new data
// I want again ===> bread
Run Code Online (Sandbox Code Playgroud)
我应该再次重新获取对象吗?
谢谢,
河
我正在尝试使用explain analyze优化我的一些选择,我无法理解为什么postgresql使用序列扫描而不是索引扫描:
explain analyze SELECT SUM(a.deure)-SUM(a.haver) as Value FROM assentaments a
LEFT JOIN comptes c ON a.compte_id = c.id WHERE c.empresa_id=2 AND c.nivell=11 AND
(a.data >='2007-01-01' AND a.data <='2007-01-31') AND c.codi_compte LIKE '6%';
------------------------------------------------------------------------------------------------------------------------------------------------
Aggregate (cost=44250.26..44250.27 rows=1 width=12)
(actual time=334.054..334.054 rows=1 loops=1)
-> Nested Loop (cost=0.00..44249.20 rows=211 width=12)
(actual time=65.277..333.179 rows=713 loops=1)
-> Seq Scan on comptes c (cost=0.00..8001.72 rows=118 width=4)
(actual time=0.053..64.287 rows=236 loops=1)
Filter: (((codi_compte)::text ~~ '6%'::text) AND
(empresa_id = 2) AND (nivell = 11))
-> Index Scan …Run Code Online (Sandbox Code Playgroud) 我使用NSManagedObject类的isUpdated实例方法跟踪我的'对象'.
当我修改现有对象时,它可以正常工作.
如果我使用例如创建一个新对象:
[NSEntityDescription insertNewObjectForEntityForName:@"Entity" inManagedObjectContext:managedObjectContext]
Run Code Online (Sandbox Code Playgroud)
我不能使用isUpdated,我必须使用isInserted.
这是有效的,但我想检查,如果对象已被新数据修改.
无论对象是否已被更改,isInserted都将返回FALSE,只有在插入或不插入时才会注意...
我能用什么?我可以跟踪对象属性的初始状态,但我更喜欢isUpdated方法.
谢谢!!!
河
我想使用GKSession连接两个设备,一个作为服务器启动,另一个作为客户端启动.使用此配置,我无法使用GKPeerPickerController.
我在连接两台设备时遇到问题:
在接口文件中我有
GKSessionDelegate
GKSession *session;
Run Code Online (Sandbox Code Playgroud)
在实现中,我使用以下代码启动服务器:
session = [[GKSession alloc] initWithSessionID:@"iFood" displayName:nil sessionMode:GKSessionModeClient];
session.delegate = self;
session.available = YES;
Run Code Online (Sandbox Code Playgroud)
客户端开始使用此代码:
session = [[GKSession alloc] initWithSessionID:@"iFood" displayName:nil sessionMode:GKSessionModeServer];
session.delegate = self;
session.available = YES;
Run Code Online (Sandbox Code Playgroud)
我如何强制使用蓝牙而不是WiFi?
我也实现了这些调用:
-(void)session:(GKSession *)session didReceiveConnectionRequestFromPeer:(NSString *)peerID {
NSLog(@"Someone is trying to connect");
}
- (BOOL)acceptConnectionFromPeer:(NSString *)peerID error:(NSError **)error {
NSLog(@"acceptConnectionFromPeer");
}
Run Code Online (Sandbox Code Playgroud)
当我开始时,我将其纳入调试器:
Listening on port 50775
2010-02-19 14:55:02.547 iFood[3009:5103] handleEvents started (2)
Run Code Online (Sandbox Code Playgroud)
当其他设备开始查找时,我得到了这个:
~ DNSServiceBrowse callback: Ref=187f70, Flags=2, IFIndex=2 (name=[en0]), ErrorType=0 name=00eGs1R1A..Only by Audi …Run Code Online (Sandbox Code Playgroud) 我找不到任何引用来向图标添加"通知",最好是添加到UITabBar中,如附图8所示.
我想我不必手动创建圆圈内的所有数字,或者每次需要时创建它并用我的一些图标手动更新图像?
谢谢,
河

我有这个简单的代码返回今天的日期作为字符串格式:
+(NSString*) getTodayString_YYYY_MM_DD {
NSDate * today = [NSDate date];
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"yyyy-MM-dd"];
return [[formatter stringFromDate:today] autorelease];
}
Run Code Online (Sandbox Code Playgroud)
使用乐器我没有内存泄漏,但是当我分析时,XCode说:
Object sent -autorelease too many times
Run Code Online (Sandbox Code Playgroud)
如果我理解正确,我必须手动释放格式化程序,因为我正在使用'alloc'创建它,但我不能在这里发布因为我必须返回值,所以我添加自动释放.
我怎样才能更好地改进呢?
谢谢,
河
我对Ember非常,非常非常新:-)
我有一个DS.Model,我想用.json强制扩展,从Rails服务器检索数据.
来自服务器的网址正在运行,我可以在浏览器的调试器中看到,网址不是DS.model网址中指定的网址
var App = Ember.Application.create();
App.store = DS.Store.create({
adapter: DS.RESTAdapter.create({url: 'http://127.0.0.1:3000'}),
revision: 8
});
App.Expedient = DS.Model.extend({
url: 'expedients/%@.json',
procedencia: DS.attr('string'),
interessat_nom: DS.attr('string'),
data_signatura_provisional: DS.attr('date')
});
Run Code Online (Sandbox Code Playgroud)
手动获取权宜之计:
var model2 = App.store.find(App.Expedient, 125000);
Run Code Online (Sandbox Code Playgroud)
输出控制台:
OPTIONS http://127.0.0.1:3000/expedients/125000 404 (Not Found)
Run Code Online (Sandbox Code Playgroud)
我想成为这样的网址:
http://127.0.0.1:3000/expedients/125000.json
Run Code Online (Sandbox Code Playgroud)
此外,我试图真正改变DS.Model网址与另一个不同的名称,如下所示:
App.Expedient.reopenClass({
url: 'mockurl/%@.json'
});
Run Code Online (Sandbox Code Playgroud)
但浏览器的控制台与之前的"url"相同,我不知道为什么Ember-Data没有得到模型的url.
谢谢!
问候,
PS.从两个来源测试Ajax时,我知道Access-Control-Allow-Origin CORS问题
我有一些数据导出到XML文件并放入远程FTP服务器.
我必须用一个唯一的属性来识别每个对象,这并不重要,但必须始终持久=>它永远不会改变.
我不想创建一个唯一的属性,序列,序列等.
我正在使用objectID,但每次使用它都会得到一个新的引用.
我知道在保存对象之前,它有一个'temporal id',但是一旦它被保存,它就会得到确定的.
从来没有看过这个.
当我导出时,只需获取所有数据并循环,并始终获得一个新的引用:
NSURL *objectID = [[personalDataObject objectID] URIRepresentation];
// some of id received for the SAME OBJECT (no changes made, saved, ...)
// 61993296
// 62194624
Run Code Online (Sandbox Code Playgroud)
谢谢,
河
我使用%d而不是%@,现在返回的数据是:
x-coredata://F46F3300-8FED-4876-B0BF-E4D2A9D80913/DataEntered/p1
x-coredata://F46F3300-8FED-4876-B0BF-E4D2A9D80913/DataEntered/p2
Run Code Online (Sandbox Code Playgroud) iphone ×7
core-data ×3
objective-c ×2
autorelease ×1
cocoa ×1
ember-data ×1
ember.js ×1
gamekit ×1
ios ×1
postgresql ×1
sql ×1