小编mon*_*eta的帖子

UIBarButtonItem具有自定义图像,没有边框

我想用自定义图像创建一个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.

我想我必须继承,但是什么?

  • NSView?
  • UIBarButtonItem?

谢谢,

问候,

iphone uibarbuttonitem ios

88
推荐指数
5
解决办法
7万
查看次数

从一个NSManagedObjectContext保存的更改不会反映在主NSManagedObjectContext上

我有一个主要的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)

cocoa core-data objective-c nsmanagedobjectcontext

14
推荐指数
1
解决办法
1万
查看次数

核心数据:重置为初始状态

我有一个对象,我对它进行了一些更改,但我不想保存它们,我想要'旧'值.

我尝试过:

[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)

我应该再次重新获取对象吗?

谢谢,

iphone core-data iphone-sdk-3.0

12
推荐指数
1
解决办法
8315
查看次数

使用顺序扫描而不是索引扫描的SELECT

我正在尝试使用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)

sql postgresql

12
推荐指数
1
解决办法
3116
查看次数

NSManagedObject:isUpdated和isInserted

我使用NSManagedObject类的isUpdated实例方法跟踪我的'对象'.

当我修改现有对象时,它可以正常工作.

如果我使用例如创建一个新对象:

[NSEntityDescription insertNewObjectForEntityForName:@"Entity" inManagedObjectContext:managedObjectContext]
Run Code Online (Sandbox Code Playgroud)

我不能使用isUpdated,我必须使用isInserted.

这是有效的,但我想检查,如果对象已被数据修改.

无论对象是否已被更改,isInserted都将返回FALSE,只有在插入或不插入时才会注意...

我能用什么?我可以跟踪对象属性的初始状态,但我更喜欢isUpdated方法.

谢谢!!!

iphone nsmanagedobject

8
推荐指数
1
解决办法
2610
查看次数

GameKit:GKSession手册

我想使用GKSession连接两个设备,一个作为服务器启动,另一个作为客户端启动.使用此配置,我无法使用GKPeerPickerController.

我在连接两台设备时遇到问题:

  • 仅使用蓝牙:不可能
  • 使用WiFi:至少在设备之间有一些数据交换但没有成功连接.

在接口文件中我有

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)

iphone gamekit

6
推荐指数
1
解决办法
4616
查看次数

UITabBar上的通知图标

我找不到任何引用来向图标添加"通知",最好是添加到UITabBar中,如附图8所示.

我想我不必手动创建圆圈内的所有数字,或者每次需要时创建它并用我的一些图标手动更新图像?

谢谢,

替代文字

iphone uitabbarcontroller

4
推荐指数
1
解决办法
4121
查看次数

对象发送--autorelease太多次了

我有这个简单的代码返回今天的日期作为字符串格式:

+(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'创建它,但我不能在这里发布因为我必须返回值,所以我添加自动释放.

我怎样才能更好地改进呢?

谢谢,

iphone objective-c autorelease

3
推荐指数
1
解决办法
4853
查看次数

DS.Model网址不在ember.js中工作

我对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问题

ember.js ember-data

3
推荐指数
1
解决办法
2696
查看次数

核心数据objectId不断变化

我有一些数据导出到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 core-data

2
推荐指数
1
解决办法
2559
查看次数