我对CoreData和使用它的这个应用程序很新.我正在开发一种功能,可以在我在应用程序中注销时清除整个核心数据.
我有2个sqllite文件(出于某种原因,他们认为这很方便)
如何清除所有数据的两个文件并将其重置为无数据状态?
在指南上,我已经尝试了很多方法.
他们似乎都失败了.现在我想知道我做错了什么?也许有人可以解释我如何以正确的方式重置我的2个CoreData文件.
编辑:
//should clear the whole coredata database. mainly used for logout mechanism
-(void)resetCoreData
{
for (NSPersistentStore *store in self.persistentStoreCoordinator.persistentStores)
{
// NSPersistentStore *store = self.persistentStoreCoordinator.persistentStores[0];
NSError *error;
NSURL *storeURL = store.URL;
DLog(@"storeURL: %@", storeURL);
NSPersistentStoreCoordinator *storeCoordinator = self.persistentStoreCoordinator;
[storeCoordinator removePersistentStore:store error:&error];
[[NSFileManager defaultManager] removeItemAtPath:storeURL.path error:&error];
DLog(@"There are erreurs: %@", error);
// [self addDefaultData];
}
_persistentStoreCoordinator = nil;
_managedObjectContext = nil;
_managedObjectModel = nil;
}
Run Code Online (Sandbox Code Playgroud)
这似乎并没有为我清除CoreData.
EDIT2:
- (NSManagedObjectContext *)managedObjectContext
{
if (_managedObjectContext …Run Code Online (Sandbox Code Playgroud) 我正在尝试将自定义委托添加到我的自定义UITableViewCell中.
在这个单元格中,我有一个按钮,需要在ViewController中触发UITableView所在的方法.
我正在做所有常规步骤来添加自定义委托但由于某种原因,当我在运行时打开VC时,应用程序崩溃并给我一个错误的访问错误.
当我评论所有委托代码时,它正常工作,所以我的猜测是我添加委托的方式有问题.当我将我的id属性取消注释时,它似乎崩溃了.
我在VC中实现协议.我确实将委托分配给cellForRowAtIndexPath:中的单元格.所有委托方法都已到位.我一直在其他类中使用类似的构造,但从未在UITableViewCells的子类中使用过.
在我发布一些代码之前,我想知道以前有人遇到过这个bug.是否以及如何解决它或者甚至可以为UITableViewCell子类创建自定义委托.
编辑:
我的customCell.h
#import <UIKit/UIKit.h>
@class MyTableViewCell;
@protocol MyTableCellProtocoll <NSObject>
-(void) didPressButton:(MyTableViewCell *)theCell;
@end
@interface MyTableViewCell : UITableViewCell
{
UIButton *myButton;
id<MyTableCellProtocoll> delegationListener;
}
@property (nonatomic,retain) UIButton *myButton;
@property (nonatomic,assign) id<MyTableCellProtocoll> delegationListener;
- (void) buttonAction;
@end
Run Code Online (Sandbox Code Playgroud)
.M
#import "MyTableViewCell.h"
@implementation MyTableViewCell
@synthesize myButton;
@synthesize delegationListener;
- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier
{
self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
if (self) {
// Initialization code
self.myButton = [UIButton buttonWithType:UIButtonTypeCustom];
self.myButton.backgroundColor = [UIColor clearColor];
self.myButton.frame = CGRectMake(5, 0, 10, 32); …Run Code Online (Sandbox Code Playgroud) 我正在我的应用程序的导航栏中创建一个UISearchBar选项.我的应用包含多个视图和子视图.我有这个主视图,其他3个观点.其中一个是空的(现在),另外两个有关于它们的表格视图.
当我正在进行实际搜索或者在uisearchbar外触摸/点击时,我希望我的键盘能够在我搜索和隐藏时显示.我根据需要使用searchbardelegate.
我可以通过以下方式使用[searchBar resignFirstResponder]隐藏键盘.
当我触摸屏幕的空白部分时
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
UITouch *touch = [[event allTouches] anyObject];
if ([mySearchBar isFirstResponder] && [touch view] != mySearchBar) {
[mySearchBar resignFirstResponder];
}
[super touchesBegan:touches withEvent:event];
}
Run Code Online (Sandbox Code Playgroud)我似乎无法做的是让它回应我的2个表格中的一个.或者当我重新填充主视图以包含完全不同的东西时.
我曾尝试更改touchesbegan方法以在触摸tableviews时重新调整搜索栏,但它到目前为止还没有工作.
亲爱的朋友先生,我已经尝试了其他几件事.谷歌,但这似乎是我需要的其他东西.
任何人都有任何想法,我可以做些什么来解决这个问题?
编辑:看来这样,当使用断点时,touchesbegan-method会响应backgroundview但当我触摸其中一个tableviews或导航栏(包含uisearchbar)时它不会响应.
这应该有一个简单的答案,但我找不到任何答案.因为我还是个假人,所以我来这里问你们.
我一直在创建这个在启动时执行10个AsyncTasks的项目.每个任务包含3个URL,这些URL在那里收集数据,并且在应用程序中尚未执行任何重要操作.
我还有10个textviews,用于跟踪AsyncTasks的进度.
当任务开始时,相应的文本视图被置于"开始"当任务正在进行时,它将其适当的文本视图设置为"正在下载"当任务完成时,它将其适当的文本视图设置为"已完成"
这就是我观察到的并且对AsyncTask提出质疑.当我启动应用程序时,我注意到有5个文本视图被切换到"正在下载"标记,所以我看到5个AsyncTasks正在按照自己的意愿完成工作.完成后,它启动一个新的AsyncTask.然而,他们从未超过5的限制.
是什么导致5个AsynchTasks同时运行的限制?我是否在一些我找不到的文件中导致这种情况?这是android 2.3.3的限制吗?也许是我用来模拟应用程序的设备的限制?
任何人都可以为我详细说明吗?
我正在开发一个项目,其中占位符颜色由开发人员全局定义.但是现在我需要为具有不同占位符颜色的表单设置样式.我该如何正确处理?
CSS
::-webkit-input-placeholder {
color: red;
}
:-moz-placeholder {
color: red;
}
::-moz-placeholder {
color: red;
}
:-ms-input-placeholder {
color: red;
}
.box input::-webkit-input-placeholder, .box textarea::-webkit-input-placeholder {
color: blue;
}
.box input:-moz-placeholder, .box textarea:-moz-placeholder {
color: blue;
}
.box input:-ms-input-placeholder, .box textarea:-ms-input-placeholder{
color: blue;
}
Run Code Online (Sandbox Code Playgroud) 我对此功能非常绝望.我尝试了几乎所有的东西,以使这些EditTexts多线启用,但他们只是继续在一行上滚动整个EditText.
停止在EditText边框的末尾并移动到下一行有多难?
我有一个EditText和2个按钮的活动.其中一个按钮将预定的文本行添加到EditText.另一个将EditText的文本放入某种形式的对象中,稍后我会在应用程序中使用它.
但是我不能让这个多线功能工作..我试过限制大小.设置多行标志.禁用单行.给行和minLines一个随机数(10).禁用horizontals滚动EditText.但没有任何作用......
谁能告诉我,我到底做错了什么?我怎么能解决这个可怕的EditText憎恶.
这就是我现在的噩梦.
<EditText
android:id="@+id/callofedittext"
android:layout_width="wrap_content"
android:inputType="textMultiLine"
android:width="300dp"
android:minLines="10"
android:layout_height="wrap_content"
android:gravity="top|left"
android:textColor="@color/textWhite"
android:background="@color/textBlack"
android:paddingLeft="3dp"
android:singleLine="false"
android:scrollHorizontally="false"
>
<requestFocus />
</EditText>
Run Code Online (Sandbox Code Playgroud)
它困扰着我的梦想......
编辑:>在隧道尽头的光.
当我专注于xml时..一个新的清洁项目向我指出,这EditText textMessage = (EditText)findViewById(R.id.callofedittext); textMessage.setInputType(InputType.TYPE_TEXT_FLAG_MULTI_LINE | InputType.TYPE_TEXT_FLAG_CAP_SENTENCES);引起了我的所有问题.不是特别是xml中的属性.
我正在创建一个基于 Java 的服务器。
我正在使用服务器套接字来接受传入消息。
然而,在我的程序中的某个时刻,我希望服务器套接字侦听另一个端口。
我关闭服务器套接字。并用我的新端口开始一个新的端口。一切安好。
但是,当我再次将服务器套接字更改为以前的端口时,会出现错误。
我读过一些内容,服务器套接字在关闭后仍处于超时状态一段时间。
所以这是我的问题:我可以绕过服务器套接字的这种超时状态,并在关闭端口并想要再次侦听同一端口后使端口再次可用吗?
编辑:我的函数用于创建和监听服务器套接字,我的函数用于使服务器套接字无效并在之后立即创建一个新的套接字
public void makeServerSocketWithPort(int portnr) throws IOException, Exception
{
server = new ServerSocket(portnr);
server.setReuseAddress(true);
while(!portchanged)
{
Socket sock = server.accept();
System.out.println(server.getLocalPort());
System.out.println(sock.getLocalPort());
handler = new Requesthandler(sock); //should be in a thread
System.out.println(server.getLocalPort());
System.out.println(sock.getLocalPort());
}
}
public void invalidateRequestHandler(int newPort)
{
if(server != null)
{
portchanged = true;
try {
server.close();
} catch (IOException ex) {
Logger.getLogger(Controlserver.class.getName()).log(Level.SEVERE, null, ex);
}
}
portchanged = false;
makeServerSocketWithPort(newPort);
}
Run Code Online (Sandbox Code Playgroud)
错误堆栈跟踪:
Exception in thread "main" java.net.SocketException: …Run Code Online (Sandbox Code Playgroud) 我正在尝试播放特定的声音.但是,我似乎无法访问我在解决方案资源管理器中添加的文件.(我有一个名为"Sounds /"的文件夹,里面有几个.wav-soundeffects)
当我将文件路径硬编码到我的硬盘上的随机固定位置时,它可以正常工作.此外,当我将我的资源放在我的"bin/debug /"文件夹中时,它工作正常(这是我最接近AppDomain.CurrentDomain.BaseDirectory函数的工作相对路径).
在使用我在解决方案资源管理器中添加的文件时,如何使SoundPlayer工作?
我目前正在使用WPF开发应用程序.而且我不得不注意到与Windows Store App变体相比ScrollViewer功能的差异.
当我在屏幕的边缘和ScrollViewer的边缘时,我想要滑动,以便我离开边缘.我看到Windows桌面或菜单栏(在屏幕的底部).有没有解决方案来防止这种滚动行为发生?当你滚动到屏幕的边缘然后被撞回来看到下面的一些Windows平台时,它相当烦人(而且很丑!).Windows应用程序ScrollViewer中已修复此问题.
我尝试覆盖ScrollChanged并检查fe horizontalOffset == 0 && horizontalChange < 0是否返回,如果是这种情况.但这种检查似乎不起作用(从那以后它可能已经太晚了).而我似乎无法找到Windows应用商店应用程序修复此问题的方式.

也许你们有个主意吗?
编辑: .NET 4.5.1中的WPF项目的再现
这段XAML在WPF中重新创建了我的问题.但是,在Windows应用商店应用中,问题似乎不存在.
滚动到和/或覆盖应用程序边缘时,如何防止此行为?
<Window x:Class="WpfApplication1.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525" ResizeMode="NoResize" WindowState="Maximized" WindowStyle="None">
<Grid>
<ScrollViewer HorizontalScrollBarVisibility="Hidden" VerticalScrollBarVisibility="Hidden" PanningMode="Both">
<Rectangle Height="2500" Stroke="Black" Width="3500" HorizontalAlignment="Left" VerticalAlignment="Top">
<Rectangle.Fill>
<LinearGradientBrush EndPoint="0.5,1" StartPoint="0,0.5">
<GradientStop Color="#FF00FF68" Offset="0"/>
<GradientStop Color="Red" Offset="1"/>
<GradientStop Color="#FF95FF00" Offset="0.506"/>
</LinearGradientBrush>
</Rectangle.Fill>
</Rectangle>
</ScrollViewer>
</Grid>
</Window>
Run Code Online (Sandbox Code Playgroud) 所以我按照这里提到的步骤:http://zxing.googlecode.com/svn/trunk/iphone/README
我确保一切正常,但我的QRCodeReader在myVC.mm文件中无法识别.
情况就是这样:项目按照链接中的描述放入我自己的项目中.我已经#import "ZXingWidgetController.h"在头文件中导入了它,它正在被识别.我已经#import "QRCodeReader.h"在实现文件(.mm)中导入了然后我将它们分配到某个按钮的targetmethod中,如下所示:
ZXingWidgetController *widController = [[ZXingWidgetController alloc] initWithDelegate:self showCancel:YES OneDMode:NO];
widController.view.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"qr_code_initialising_bg.png"]];
QRCodeReader* qrcodeReader = [[QRCodeReader alloc] init];
NSSet *readers = [[NSSet alloc ] initWithObjects:qrcodeReader,nil];
[qrcodeReader release];
widController.readers = readers;
[readers release];
[self presentModalViewController:widController animated:YES];
Run Code Online (Sandbox Code Playgroud)
现在它告诉我这是问题所在:
QRCodeReader* qrcodeReader = [[QRCodeReader alloc] init];
NSSet *readers = [[NSSet alloc ] initWithObjects:qrcodeReader,nil];
[qrcodeReader release];
Run Code Online (Sandbox Code Playgroud)
它说: Use of undeclared identifier 'QRCodeReader'
我正在开发具有缩放功能的应用程序.在这个应用程序中我有这个按钮.我希望它以多种方式响应攻击:
单击:略微放大.
双击:放大至最大值
我已经尝试了几种方法来实现这一点,但没有一个是我想要的.
UITapGestureRecognizer *tapGesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleTapGesture:)];
tapGesture.numberOfTapsRequired = 2;
[self.view addGestureRecognizer:tapGesture];
Run Code Online (Sandbox Code Playgroud)
[zoomin addTarget:self action:@selector(zoominMax) forControlEvents:UIControlEventTouchDownRepeat];
Run Code Online (Sandbox Code Playgroud)
单击和双击都可以工作,但是当我按下按钮一次进行轻微变焦时,几秒后再次按下它不会轻微放大,它会放大到最大值.
可以通过定时器和位置检查来解决这个问题,这样当你点击并再次点击时,你可以确定该位置位于类似的区域,并且水龙头在定时器范围内发生.
但这是我真正需要的吗?有更简单的解决方案吗?
我的要求是在给定区域中生成一个随机点,即我有一个空间的CGRect,我需要在这个矩形中生成一个随机点.
我怎么能在这种情况下继续?
objective-c ×6
android ×2
c# ×2
cocoa-touch ×2
audio ×1
c++ ×1
cgrect ×1
core-data ×1
css ×1
delegates ×1
html ×1
java ×1
limit ×1
qr-code ×1
random ×1
reset ×1
scroll ×1
scrollviewer ×1
serversocket ×1
soundplayer ×1
timeout ×1
uisearchbar ×1
uitableview ×1
wpf ×1
zxing ×1