小编Pet*_*sey的帖子

Cocoa/Objective-C将嵌套字符串/数据写入文件,怎么做?

我需要创建一个包含6条记录的xml .plist,其中记录5是来自用户的输入字符串,其余的都是固定数据.我不确定这样做的最佳方法是什么?看起来它应该很简单,但我没有取得多大成功.

需要编写的数据如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>AREA51</key>
    <dict>
       <key>ORIGIN</key>
       <data>M45</data>

          ...(4 more records)... 

              (USER STRING) 

          ...(1 more record)...

   </dict>
</dict>
</plist>
Run Code Online (Sandbox Code Playgroud)

我尝试过一些例子,但我认为它们已经过时而且不符合规范.谢谢!

cocoa objective-c plist

0
推荐指数
1
解决办法
236
查看次数

从NSDocument类访问主窗口

我有一个NSDocument类,我需要访问主菜单窗口,这是一个在应用程序启动时打开的窗口.当我从应用程序在该窗口中操作时似乎都工作,但是当尝试从readFromFileWrapper:ofType:error:窗口执行相同的操作时,我访问似乎是零.为什么会这样?

编辑:一些处理此问题的代码:

- (BOOL)readFromFileWrapper:(NSFileWrapper *)fileWrapper ofType:(NSString *)typeName error:(NSError **)outError
{
    if([[NSFileManager alloc] fileExistsAtPath:[NSString stringWithFormat:@"%@/Project.plist",[[self fileURL] path]]]) {
        NSLog(@"%@", [[self fileURL] path]);

        NSDictionary *project = [NSDictionary dictionaryWithContentsOfFile:[NSString stringWithFormat:@"%@/Project.plist",[[self fileURL] path]]];

        if([[project objectForKey:@"type"] isEqualToString:@"vote"]) {

            [self openProject:[[self fileURL] path] type:@"vote"];

            return YES;

        } else if([[project objectForKey:@"type"] isEqualToString:@"quiz"]) {

            [self openProject:[[self fileURL] path] type:@"quiz"];

            return YES; 

        } else {
            return NO;
        }
    } else {
        return NO;
    }
}
Run Code Online (Sandbox Code Playgroud)

那是我的readFromFileWrapper:ofType:error:方法.这是我的openProject:type:方法:

-(void)openProject:(NSString *)filepath type:(NSString *)type 
{
    NSLog(@"Opening project …
Run Code Online (Sandbox Code Playgroud)

macos cocoa nsdocument nswindow

0
推荐指数
1
解决办法
3637
查看次数

在Quartz中使用XOR绘图

假设我正在将一些应用程序移植到Mac OS X,在某些情况下,它会在其他平台下使用Xor操作呈现文本和插入符号.研究表明,Quartz绘图函数不支持XOR运算.我对么?还有什么替代方法可以将这些代码移植到Mac OS X?

macos cocoa core-graphics quartz-graphics

0
推荐指数
1
解决办法
785
查看次数

for(目录中的NSArray*a)无法正常工作

将plist加载到NSArray后,我试图访问其嵌套数组.

NSArray *tree = [[NSArray alloc] initWithContentsOfFile:path];
for (NSArray *a in tree)
{
    //Let's assume object at index 0 is always NSString
    NSLog(@"Returning the string: %@ ", [a objectAtIndex:0]);
}
Run Code Online (Sandbox Code Playgroud)

调试器中的一些值:

   tree __NSCFArray *   0x6856cf0
   0    __NSCFString *  0x6818b70
   1    __NSCFString *  0x682be10
   2    __NSCFArray *   0x6856cd0
Run Code Online (Sandbox Code Playgroud)

所以我期待for语句跳过前两个NSStrings然后用NSArray执行.

然而步进一行:__ NSCFString*0x6818b70

繁荣,appcrash.

提示?

foreach cocoa objective-c nsarray

0
推荐指数
2
解决办法
176
查看次数

如何在Objective-C中创建和调用基本方法?

我正在尝试在目标C中创建一个基本方法(函数)并且遇到一些错误,这里是代码:

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view from its nib.

    [self setupWebView];
}

- (void)setupWebView {
    NSLog(@"Testing"); 

}
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

接收器类型'Reading'为实例消息不声明带有选择器'setupWebView'的方法

知道我做错了什么吗?

cocoa cocoa-touch objective-c

0
推荐指数
1
解决办法
152
查看次数

来自不同类的NSMutableArray获取Null

我是这堂课:

@interface PersonModel : NSObject

@property (nonatomic, weak) NSString *string;
@property (nonatomic, weak) NSMutableArray *array;

@end
Run Code Online (Sandbox Code Playgroud)

在另一个类中,我使用该字符串和数组.字符串很好,但数组变为null.我像往常一样启动它,像这样:

person.array = [[NSMutableArray alloc] init];
[person.array addObject:[object copy]];
NSLog(@"Array: %@", person.array);
Run Code Online (Sandbox Code Playgroud)

null cocoa objective-c nsmutablearray ios

0
推荐指数
1
解决办法
145
查看次数

使用键值观察以检测对象何时被释放

如何找出对象何时被释放?我正在监听kvo更改,但是在保留计数变为0之前对象被取消分配,并且我收到以下警告:

MyViewController类的实例0x16562be0已取消分配,而键值观察者仍在其中注册.观察信息被泄露,甚至可能被错误地附加到其他物体上.在NSKVODeallocateBreak上设置断点以在调试器中停止.这是目前的观察信息:

基本上我要做的是检测模型何时被解雇.我不能使用Delegate,因为呈现的viewControllers是动态的,我的mainViewController除了它们是UIViewController的子类之外不了解它们.

[anotherViewController addObserver:self forKeyPath:@"retainCount" options:NSKeyValueObservingOptionNew | NSKeyValueObservingOptionInitial | NSKeyValueObservingOptionOld | NSKeyValueObservingOptionPrior context:nil];

- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
{
    // Here check for the changes and see of the new value is 0 or not
}
Run Code Online (Sandbox Code Playgroud)

我也试着监听viewController的superView被改为nil

[anotherViewController.view addObserver:self forKeyPath:@"superView" options:NSKeyValueObservingOptionNew | NSKeyValueObservingOptionInitial | NSKeyValueObservingOptionOld | NSKeyValueObservingOptionPrior context:nil];
Run Code Online (Sandbox Code Playgroud)

objective-c key-value-observing

0
推荐指数
2
解决办法
2696
查看次数

解决潜在的内存泄漏问题

在xcode中运行分析工具后,我得到以下记忆泄漏

//Getting memeory leak warning here "Potential leak of an object allocated and stored into 'phones'
ABMultiValueRef phones = ABRecordCopyValue(ref, kABPersonPhoneProperty);

//Getting potential leak error for line below
if (ABMultiValueGetCount(ABRecordCopyValue(ref, kABPersonPhoneProperty))!=0)
{
    //Getting potential leak error for line below
    CFStringRef pNumber = ABMultiValueCopyValueAtIndex(phones,0);
    phoneNumber = [NSString stringWithFormat:@"%@", (NSString *)pNumber];
    NSString *contactFirstLast = [NSString stringWithFormat: @"%@ %@", firstName, lastName];
}
Run Code Online (Sandbox Code Playgroud)

我该如何解决这些泄漏?

memory-leaks objective-c core-foundation abaddressbook ios

-1
推荐指数
1
解决办法
1785
查看次数

如何在Mac应用程序中说出文字?

我正在制作一个Xcode应用程序,我需要能够按下按钮并阅读一些文本.如果有人可以向我提供我需要在IBAction按钮的括号内使用的代码行,那将非常感激.谢谢.

macos cocoa objective-c

-1
推荐指数
1
解决办法
1076
查看次数

写入位于iPhone资源文件夹中的plists

任何人请回答我,如何写入位于我的资源文件夹中的plist文件.请为我写一个示例代码.

iphone cocoa-touch objective-c

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